|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 6. Veri tanımlama (DDL) > 6.3 Öteki nesneler |
CREATE DOMAIN [şema.]ad [AS] <tip>
[CHARACTER SET <cs>] [COLLATE <coll>]
[DEFAULT <ifade> | = <ifade>]
[[CONSTRAINT <ad>] NOT NULL] [[CONSTRAINT <ad>] CHECK ( <ifade> )]
[ATTRIBUTES ( ad = <sabit> [, …] )]CHECK içinde değeri temsil eden sözde sütun VALUE'dur. NOT NULL ve
CHECK herhangi bir sırada, her biri bir kez yazılır.
<tip> önceden tanımlı bir tip ya da bir sıralı (enum) tip
olmalıdır (SQL:2011 4.15) — başka bir alan (domain), bir tablo veya bir kullanıcı tipi olamaz;
yanlış türde bir ad, türünü söyleyen bir derleme hatası alır.
Alan (domain) tanımındaki NOT NULL ve CHECK, o alanla tiplenen tablo
sütunlarında ve PSQL değişkenlerinde uygulanır. EXECUTION STORAGE kipindeki bir
veritabanında satır kurallarını depo çalıştırır (bkz. CREATE DATABASE, çalışma kipi).
CREATE TYPE [şema.]ad
[DYNAMIC] [[NOT] FINAL] [[NOT] INSTANTIABLE] [INHERIT FROM <tip>]
[AS <gövde> END]
CREATE [OR ALTER | OR REPLACE] PACKAGE [şema.]ad [INHERIT FROM <paket>] AS <gövde> END
ALTER PACKAGE [şema.]ad [INHERIT FROM <paket>] AS <gövde> END
ALTER PACKAGE [şema.]ad RENAME TO <yeni ad>Paketin başlığı ve gövdesi tek deyim olduğu için ALTER PACKAGE … AS ve var olan adla
CREATE OR ALTER PACKAGE paketi yeniden tanımlar: paketin ve aynı
adlı (aynı parametre sayılı) üyelerin kimliği, hakları ve öznitelikleri korunur, yeni tanımda olmayan üye
düşer, yeni üye eklenir. Üyeye bağlı çağıranlar deyim anında yeniden derlenir. Derlenemeyen yeniden tanım
eski paketi yerinde bırakır; ROLLBACK eski paketi ve bağımlılarını geri getirir (görünüm ve
yordam yeniden tanımlarında da).
Gövde atlanırsa ileri bildirim olur. Gövde üyeleri: PRIVATE|PROTECTED|PUBLIC ve
OVERRIDE, STATIC değiştiricileri;
PRAGMA VISIBILITY {PRIVATE|PROTECTED|PUBLIC} ile varsayılan görünürlük; iç içe
TYPE, ENUM, OPERATOR, EXCEPTION,
DIRECTORY; [AGGREGATE] FUNCTION ve PROCEDURE;
CONST <ad> <tip> = <ifade>; üye değişkenler; ve tip adıyla aynı adı
taşıyan kurucular. Paket üyeleri statiktir. INHERIT FROM ile alt tip, taban tipin
özniteliklerini ve metodlarını alır (öznitelikler alt tipin örneğinde aynı sırada yer alır; alt tipin
metodu miras alınan özniteliği okur/yazar); gövdesiz bildirilen metod soyuttur — bütün soyut metodları
OVERRIDE eden alt tip kurulabilir, etmeyen tip ve soyut metodlu taban tip kurulamaz.
CREATE [OR ALTER | OR REPLACE] {FUNCTION | PROCEDURE | AGGREGATE FUNCTION | SQLMACRO} [şema.]ad
[ ( [SKIP NULLS | ALLOW NULLS] [ALLOW USING]
[IN|OUT|INOUT] <ad>[, <ad2>] <tip> [DEFAULT <ifade> | = <ifade>]
[BY {VALUE|REFERENCE|DESCRIPTOR}]
[ATTRIBUTES ( ad = <sabit> [, …] )]
[, …]
[PARAMS <ad> ARRAY OF <tip>] ) ]
[RETURNS <tip> | RETURNS SAME AS PARAMETER <n>] -- fonksiyon
[RETURNS ( <sütun> <tip> [, …] )] -- sonuç kümesi döndüren yordam
[ATTRIBUTES ( ad = <sabit> [, …] )] -- yordam/işlev öznitelikleri
[SQL SECURITY {DEFINER | INVOKER}]
[SET SEARCH_PATH {= | TO} <şema> [, …]]
AS
<bildirimler>
BEGIN
<gövde>
ENDBir parametreye varsayılan verildiyse ondan sonraki bütün parametrelerin de varsayılanı
olmalıdır. PARAMS değişken sayıda argüman içindir ve tipi bir ARRAY olmalıdır.
RETURNS ( … ) biçimi SUSPEND kullanımını açar. SKIP NULLS yalnız
yordamda, ALLOW NULLS yalnız işlevde yazılır.
\ komutlarıCREATE [OR ALTER] METACOMMAND [şema.]ad [ ( <param> <tip> [= <öndeğer>] [, …] ) ]
[RETURNS string]
[ATTRIBUTES ( ad = <sabit> [, …] )]
[DESCRIPTION '<açıklama>']
[CLIENT]
AS
BEGIN
… RETURN '<sql metni>';
END
\ad [arg …] -- satır başında çağrı
ALTER METACOMMAND ad … AS … END -- yeniden tanım (kimlik korunur)
DROP METACOMMAND adMeta-komut bir SQLMACRO'dur: gövdesi PSQL'dir ve RETURN ettiği metin çağrının yerinde SQL
olarak çalışır (bir SELECT sonuç kümesi olarak gelir, bir DDL yürütülür, birden çok deyim yazılabilir).
RETURNS yazılmazsa string'dir. Çağrı satır başında \ad ile yapılır (psql'in
\d'si gibi): argümanlar boşlukla ayrılır, '…' ya da "…" içindeki argüman boşluk
taşır (aynı tırnak ikilenerek kaçılır), sayısal ve boolean parametreye tırnaksız yazılan sayı / true /
false olduğu gibi geçer, öbür argümanlar dizgidir; eksik argüman parametrenin öndeğerini alır, fazlası hata.
Sondaki ; ve -- yorumu argümana girmez. Meta-komut yalnız \ad ile çağrılır;
ad(…) yazımı onu açmaz (bir tablo ya da kolon dt, c, l adını taşıyabilir). Meta-komutlar ifade
içinde ad çözümüne girmez: select x d … order by d
yazımındaki d takma adı \d komutundan etkilenmez.
CLIENT ile bildirilen komut gövdesizdir: onu istemci programı (msql, yönetim arayüzünün SQL sayfası) ele
alır, motor \ad çağrısını "CLIENT meta command" hatasıyla reddeder. Katalogda durmasının nedeni
\help listesinin tek yerden gelmesidir. Katalog türü METACOMMAND'dır (ivd$type);
DROP METACOMMAND yalnız meta-komutları görür, DROP FUNCTION onları da düşürebilir; aynı adla ikinci
bir meta-komut ya da SQLMACRO (aşırı yükleme) reddedilir, CREATE OR ALTER aynı imzayla yeniden tanımlar.
Kullanıcı kendi şemasında ekler; arama yolu ile çözülür; seviye paketiyle taşınır.
Yerleşikler (SYS, start33metacommands.sql): \help [ad parçası] (
kayıtlı komutlar: şema, ad, parametreler, açıklama), \d [tablo|görünüm] (adsız: kullanıcı tablo ve
görünümleri; adlı: kolonları), \dt / \dv / \df / \dp [ad parçası] (tablolar,
görünümler, işlevler, yordamlar), \dn (şemalar), \l (MASTER'daki kayıtlı veritabanları). İstemci komutları (CLIENT): \timing,
\x, \o, \i, \c, \e, \q,
\f, \h. /ivedi
oturumunun metaCommands isteği aynı listeyi istemciye verir (ad, şema, açıklama, CLIENT bayrağı, parametreler).
Sınama modülü: sqltest/pcm/test04-metacommand.sql.
CREATE [OR ALTER | OR REPLACE] TRIGGER [şema.]ad
{ FOR <ilişki> [ACTIVE|INACTIVE] | [ACTIVE|INACTIVE] ON <ilişki> }
{ INSTEAD OF <olaylar> | {BEFORE|AFTER} [OR {BEFORE|AFTER}] <olaylar> }
[POSITION <n>]
[FOR EACH {ROW | STATEMENT}]
[REFERENCING {OLD|NEW|PARENT} AS <takma ad> …]
AS … END<olaylar>: INSERT, UPDATE, DELETE —
en az biri zorunlu, OR ile herhangi bir birleşimi ve sırası serbest.
Veritabanı olayı biçimi:
CREATE TRIGGER ad [ACTIVE|INACTIVE]
ON {CONNECT | DISCONNECT | TRANSACTION {START|COMMIT|ROLLBACK}}
[POSITION <n>]
AS … ENDCREATE COLLATION [şema.]ad
FOR <karakter kümesi>
[FROM <taban harmanlama>]
[NO PAD | PAD SPACE]
[CASE SENSITIVE | CASE INSENSITIVE]
[ACCENT SENSITIVE | ACCENT INSENSITIVE]
['<öznitelikler>']Bir harmanlama katalog nesnesidir: COLLATE <ad> yazan her kolon, karşılaştırma ve
ORDER BY onu kullanır. Öndeğerler standardınkidir: NO PAD, CASE SENSITIVE,
ACCENT SENSITIVE. Öznitelik dizgesi Firebird'ün yazımıdır ve içinden LOCALE=<yerel ayar>
okunur — sıralama o yerel ayarın ICU kuralıyla yapılır.
create collation tr_ci for utf8 from unicode case insensitive 'LOCALE=tr';
create table m (ad varchar(50) collate tr_ci);
select * from m where ad = 'iğne'; --> 'IĞNE' de eşleşir, 'IGNE' eşleşmezALTER COLLATION yalnız RENAME TO ve SET ATTRIBUTES alır; tanımın kendisi
değiştirilemez — değiştirmek DROP + CREATE demektir. COMMENT ON COLLATION
yazılabilir.
Harmanlama depolama motoruna da iner. Firebird standardın yazımını anlar
(CREATE COLLATION "AD" FOR UTF8 FROM UNICODE ... 'LOCALE=tr'). PostgreSQL ve
ODBC seçenek listesi ister: duyarlılık ICU'nun BCP‑47 anahtarlarına çevrilir
(ks güç, kc büyük/küçük düzeyi, ka-shifted =
PAD SPACE) ve aynı değeri farklı iki dizgeye veren harmanlama
deterministic = false yazılır:
CREATE COLLATION "TR_CI" (provider = icu, locale = 'tr-u-ks-level2', deterministic = false)
sqlite, bellek motoru ve EMR harmanlamayı depoda kurmaz; orada sıralamayı motor yapar,
yani sonuç aynıdır, yalnızca ORDER BY depoya itilmez.
Harmanlama kolona doğrudan yazılabildiği gibi domainin tanımında da durabilir; o domainle
tiplenen her kolon onu devralır ve kolonda ayrıca COLLATE yazılmaz:
create collation tr_ci for utf8 from unicode case insensitive 'LOCALE=tr';
create domain ftAD_CI as varchar(50) collate tr_ci;
create table m (ad ftAD_CI); --> ad kolonu tr_ci ile sıralanır
Yan tümcenin yeri lehçeye göre değişir ve motor bunu kendisi ayarlar: PostgreSQL onu tipin hemen
ardında ister, Firebird ise DEFAULT / NOT NULL / CHECK'ten sonra, en sonda.
COLLATE <ad> hiçbir harmanlamaya çözülmezse deyim kabul edilir, yan tümce
düşer ve öndeğer harmanlama kullanılır; ama bir uyarı yazılır. En sık sebebi
CREATE COLLATION'ın bir #MODE PRECOMPILE bloğunda olmasıdır: orada yazılan her şey
ham metindir, motor onu derlemez, dolayısıyla katalogda öyle bir harmanlama oluşmaz. Harmanlamanın
motor tarafından bilinmesi için tanım IVEDI yazımıyla, PRECOMPILE dışında verilir; motor lehçe
metnini zaten kendisi üretir.
CREATE SEQUENCE [şema.]ad
[INCREMENT [BY] n] [START [WITH] n] [MINVALUE n] [MAXVALUE n]
[CYCLE] [CACHE n]
[NO {MINVALUE|MAXVALUE|CACHE|CYCLE}]
[NOMINVALUE | NOMAXVALUE | NOCACHE | NOCYCLE]Öznitelikler herhangi bir sırada, her biri bir kez yazılır. INCREMENT sıfır
olamaz ve MINVALUE < MAXVALUE olmalıdır.
ALTER SEQUENCE daha küçük bir kümeyi kabul eder:
INCREMENT [BY], MINVALUE, MAXVALUE,
RESTART [WITH], CACHE, CYCLE,
NO {MINVALUE|MAXVALUE|CYCLE}. START ve NO CACHE burada
kabul edilmez.
NEXT VALUE FOR, GEN_ID(dizi, n), kimlik kolonları ve motorun kendi
nesne kimlik dizisi değeri depolama motorunun dizisinden alır:
PostgreSQL nextval, Firebird GEN_ID, sqlite sqlite_sequence,
bellek motoru atomik sayaç. Böylece OPEN DATABASE sonrası sayaçlar kaldıkları yerden sürer ve
aynı depoya IVEDI dışından (psql, isql) erişen bir uygulama ile aynı dizi paylaşılır.
Değer sözleşmesi: dönen değer ilerletme öncesi sıradaki değerdir, GEN_ID(dizi, 0)
tüketmeden okur, INCREMENT BY yok sayılır (adım her zaman 1 / n), dizi işlem dışıdır
(ROLLBACK geri sarmaz), ALTER SEQUENCE ... RESTART WITH depoya da yazılır.
CACHE n (n > 1) PostgreSQL/ODBC/Firebird/sqlite'ta değerleri depodan n'lik
bloklar halinde ayırır ve süreç içinde tüketir: bir tur yerine n değer; süreç bittiğinde
bloğun kalanı boşluk olur (PostgreSQL'in kendi CACHE'i gibi), RESTART bloğu
atar, GEN_ID(dizi, k) blok içinde k konum yürür. Bellek motoru blok kullanmaz. Katalog
kimlik kolonları cache 100 ile bildirilmiştir. Depoda
bulunmayan dizi (commit edilmemiş CREATE SEQUENCE, EMR/BlackHole) bellek sayacıyla
çalışır. Metadata Operations=OFF ile kurulmuş bir veritabanında IVEDI'nin kurmadığı
dizi PostgreSQL'de kimlik kolonunun kendi dizisinden (pg_get_serial_sequence) ya da
aynı adlı diziden, Firebird'de rdb$generator_name'den bulunur; bulunamazsa bellek
sayacı kalır.
CREATE [UNIQUE] [ASCENDING|DESCENDING] INDEX ad
ON <tablo> { ( <ifade> [ASC|DESC] [, …] ) | COMPUTED [BY] ( <ifade> ) }
[WHERE <koşul>]
[ATTRIBUTES ( ad = <sabit> [, …] )]Anahtarlar tam birer ifadedir, yani işlevsel indeks yazılabilir; Firebird'ün
COMPUTED [BY] (<ifade>) yazımı tek ifadeli anahtarın aynısıdır. USING <yöntem>,
INCLUDE ve CONCURRENTLY yoktur. SQL standardında CREATE INDEX tanımlı
değildir; yazım Firebird'ünkini izler.
Koşullu indeks (WHERE <koşul>, Firebird 5 / PostgreSQL / sqlite): indekse yalnız
koşulu doğru olan satırlar girer, UNIQUE yalnız onlar arasında denetlenir —
create unique index … on uye (eposta) where aktif yalnız etkin üyeler arasında tekillik ister. Koşul CHECK
gibi yalnız tablonun kolonlarından ve deterministik ifadelerden kurulur. Depoya WHERE ile gider; bellek
motorunda indeks, sorgunun WHERE'i indeksin koşulunu aynen içeriyorsa aramada kullanılır, içermiyorsa
yalnız tekilliği korur. ADOPT PostgreSQL'in ifade ve koşullu indekslerini, Firebird ile sqlite'ın koşullu
indekslerini depo yürütmeli (EXECUTION STORAGE) veritabanında NATIVE_SQL(...) ile kataloğa
alır; IVEDI yürütmeli veritabanında onları atlayıp raporlar.
CREATE INDEX'te ad nitelenmez — indeks tablosunun şemasında
doğar. Sonradan ona başvuran deyimler ise <şema>.<ad> yazımını kabul eder
(SQL:2011 11.40 modeli): DROP INDEX, ALTER INDEX,
SET STATISTICS INDEX ve aynı şekilde DROP/ALTER TRIGGER.
Nitelenmemiş ad yalnızca geçerli şemada aranır; üç parçalı
şema.tablo.ad yazımı yoktur.
İndeks ve kısıt adları şemada tekildir ve ikisi tek ad alanını paylaşır: aynı adı iki ayrı
tabloda kullanmak, bir indekse bir kısıtın adını vermek ya da şemadaki bir tablo, görünüm veya dizinin adını
vermek DUPLICATE_OBJECT (42710) hatasıdır. CREATE INDEX IF NOT EXISTS bu durumda
hiçbir şey yapmaz. Depoda (sqlite, PostgreSQL, ODBC, Firebird) indeksin adı IVEDI'deki fiziksel adın
kendisidir; yalnız Firebird'de 63 karakteri aşan ad kırpılıp nesne kimliğiyle tamamlanır.
CREATE [OR ALTER | OR REPLACE] VIEW [şema.]ad [ ( sütun [ATTRIBUTES ( … )] [, …] ) ]
[ATTRIBUTES ( ad = <sabit> [, …] )]
AS {SELECT … | WITH …}
[WITH [CASCADED | LOCAL] CHECK OPTION]
CREATE VIEW [şema.]ad ( sütun <tip> [, …] ) AS NATIVE_SQL( … ) -- gövdesi depo metniSütun takma adı sayısı sorgunun sonuç sayısına eşit olmalıdır. Görünüm düzeyi
ATTRIBUTES AS'ten önce durur (bkz.
ATTRIBUTES).
Güncellenebilir görünüm Firebird'ün kuralıyla belirlenir: FROM'da tek bir tablo
ya da tek bir güncellenebilir görünüm vardır; join, DISTINCT, GROUP BY /
HAVING, UNION, FIRST / SKIP ve toplama işlevi yoktur.
WHERE serbesttir (alt sorgu, işlev çağrısı). Sütun listesi açıkça yazılabilir, SELECT *
şart değildir. Görünüm üzerinden yapılan INSERT / UPDATE / DELETE taban
tabloya yazar ve görünümün (görünüm üstüne görünümde her ikisinin) koşulunu uygular. İfade ya da sabit sütun
(a + 1 AS c, 5 AS k) görünümü salt okunur yapmaz; yalnız o sütun salt okunurdur: ona
yazmak "attempted update of read-only column" hatasıdır, DML'in koşulunda okunması serbesttir. Görünümün satır
tetikleyicisi varsa DML yalnız tetikleyicileri çalıştırır ve her sütunu (ifade sütunu dahil) yazabilir.
Katalogda güncellenemeyen görünüm ve salt okunur sütun IVD$TYPE_FLAGS'te 0x00400000
bitini taşır; sütunda IVD$OBJECT_COLUMNS.IVD$UPDATEABLE 'N''dir.
WITH CHECK OPTION yalnız güncellenebilir görünümde
yazılabilir; başka görünümde sözdizimi hatasıdır. Görünüm üzerinden yapılan INSERT ya da
UPDATE görünümün koşulu dışına düşen satırı CHECK_OPTION_VIOLATION (SQLSTATE
44000) ile reddeder; görünümde verilmeyen bir sütunun NULL kalması (UNKNOWN) da
ihlaldir. CASCADED ve LOCAL sözcükleri kabul edilir ve aynı anlama gelir.
Gövdesi NATIVE_SQL olan görünümde sütun listesi her sütunun tipini taşımak zorundadır ve
WITH CHECK OPTION yazılamaz (bkz. NATIVE_SQL). WITH READ
ONLY ve materyalize etme yoktur.
CREATE DATABASE {ad | '<veri dosyası>'}
[LOCATION <v>]
[STORAGE ENGINE <motor>] [PARAMETERS <v>]
[USER <v>] [PASSWORD <v>]
[PAGE_SIZE [=] <n>]
[DEFAULT CHARACTER SET <cs>] [COLLATION <c>]
[WITH ADMIN OPTION]
[EXECUTION IVEDI | STORAGE]Yan tümceler herhangi bir sırada yazılabilir: STORAGE ENGINE FIREBIRD EXECUTION IVEDI
PARAMETERS '…' ile EXECUTION IVEDI STORAGE ENGINE FIREBIRD PARAMETERS '…' aynıdır. Aynı yan
tümce iki kez yazılamaz. CREATE DATABASE yalnız olmayan depoyu yaratır.
OPEN DATABASE aynı yan tümceleri alır (EXECUTION dışında: var olan veritabanının kipi
kartındadır), ayrıca UPGRADE ve CREATE CATALOG:
OPEN DATABASE ad [<CREATE DATABASE yan tümceleri>] [UPGRADE] [CREATE CATALOG]CREATE CATALOG kataloğu olmayan var olan depoya katalog tablolarını kurar; aynı adlı sistem
nesnelerini ezer; veritabanı kaydedilir ve ALTER DATABASE … UPGRADE bekler (bkz. DROP / CLOSE / OPEN
DATABASE).
Depolama motoru adları: MEMORY, EMR, BLACKHOLE,
ODBC, FIREBIRD, IOT, SQLITE,
POSTGRESQL. Hangilerinin kullanılabilir olduğu derleme seçeneklerine bağlıdır —
bkz. “Depolama motorları”.
Çalışma kipi (EXECUTION) veritabanının tetikleyicilerini ve tablo
CHECK kısıtlarını kimin çalıştırdığını söyler:
| Kip | Anlamı | Öndeğer olduğu depolar |
|---|---|---|
IVEDI | Veritabanını motor kullanır ve yönetir; tetikleyiciler ve
CHECK kısıtları motorda çalışır. | MEMORY, SQLITE,
EMR, BLACKHOLE, IOT (MASTER da) |
STORAGE | Veritabanını istemciler depoya doğrudan bağlanarak kullanır; motor
yapıları deponun kendi dilinde kurar, satırın kurallarını çalıştırmaz — onları depo
çalıştırır: tetikleyiciler, CHECK, NOT NULL, öndeğerler, kimlik (GENERATED
… AS IDENTITY) ve üretilen kolonlar. Motorun yazdığı satırda verilmeyen kolon depoya gönderilmez;
depo ürettiği değerleri (kimlik, öndeğer) RETURNING ile motora geri verir. |
FIREBIRD, POSTGRESQL, ODBC |
Kip veritabanının kartında (ivd$database.ivd$execution) durur ve
IVD$V_DATABASE.EXECUTION ile okunur; kartta değer yoksa deponun öndeğeri geçerlidir.
OPEN DATABASE kipi karttan alır; değiştirmek için
ALTER DATABASE <db> SET EXECUTION IVEDI | STORAGE kullanılır (değer
COMMIT'te yazılır).
| Deyim | Notlar |
|---|---|
CREATE SCHEMA [AUTHORIZATION <u>] ad |
AUTHORIZATION adın önüne veya arkasına yazılabilir ve şemanın sahibi olarak
kaydedilir; çözülemeyen kullanıcı adı uyarı verir, sahip boş kalır.
ALTER SCHEMA … AUTHORIZATION <u> sahibi değiştirir. |
CREATE ENUM ad [AS] ( e1 [= n] [, …] ) |
Değerler 0'dan artar; = n sayacı yeniden kurar. Bir enum değeri çalışma
zamanında tamsayıdır ve depoya da tamsayı yazılır; üye adı yalnızca tipte
durur. Üst düzey bir deyimde üyeye adıyla ulaşmanın yolu CAST'tir — üye adı
doğrudan yalnızca PSQL kapsamında çözülür:
Metin ve sayıdan enum'a geçiş yalnızca açık CAST ile olur (atama ile değil);
tanımsız bir ad CONVERT_ERROR verir. Ad karşılaştırması büyük/küçük harf
duyarsızdır ve yerelden bağımsızdır. JSON yüzeylerinde (EXECSQL,
/crud) enum kolonu üye adı olarak döner. |
CREATE EXCEPTION ad '<mesaj>' [CODE <n>] [STATE '<sqlstate>'] |
Mesaj zorunlu. CODE (eş anlamlısı SQLCODE) ve STATE
(SQLSTATE, tam 5 karakter) isteğe bağlıdır, sırası serbesttir; CODE 0
ayrılmıştır. |
CREATE SYNONYM ad FOR <nesne.yolu> |
Hedef derleme anında çözülmez — kullanıldığı anda çözülür, yani sonradan yaratılan bir
nesneye eşanlam yazılabilir. Hedef nitelenebilir:
<şema>.<nesne> ve
<veritabanı>.<şema>.<nesne> de geçerlidir; ad çözümü noktalı
SQL adının kurallarını izler (iki parçalı adda şema kazanır). Eşanlamın hedefi başka bir
eşanlam da olabilir. |
CREATE DIRECTORY ad AS '<yol>' [FORCED] |
Yol mutlak olmalı ya da ${TEMP}, ${HOME}, ${APPDIR},
${CONFIGDIR}, ${CWD}, ${LOGDIR}, ${DBDIR} ya da bir ortam
değişkeni (${AD}) yer tutucusuyla başlamalı. |
CREATE CREDENTIAL ad [TYPE {OS|DBLINK|EMAIL|HTTP|FTP|CUSTOM}] [SUB_TYPE '…'] [IDENTITY '…'] [PASSWORD '…'] [ACTIVE|INACTIVE] [TAGS ( ad = <sabit> [, …] )] |
Yan tümceler sırasız, her biri en çok bir kez; TAGS en sonda. Tür, alt tür, kimlik ve
parola nesnenin öznitelikleri olarak kataloğa yazılır, parola kodlanmış saklanır. Kimlik bilgisi kendi
başına bağlantı açmaz; onu kullanan yerleşik paket (örneğin WhatsApp istemcisi) çağırandan
GRANT USAGE ON CREDENTIAL <ad> hakkını ister. ALTER CREDENTIAL:
TYPE, SUB_TYPE, IDENTITY, PASSWORD, RENAME TO.
Sınama modülü: sqltest/ddl/test10-credential.sql. |
CREATE ROLE ad, CREATE USER ad [<yan tümce> …] |
ALTER USER de aynı yan tümce listesini alır
(IDENTIFIED BY/EXTERNALLY, ACCOUNT LOCK/UNLOCK,
VALID UNTIL, DEFAULT SEARCH_PATH, FOR LOGIN,
PRIVILEGE CHECK) —
bkz. “Yetkilendirme”. |
CREATE OPERATOR [<dönüş tipi>] <op> ( … ) AS … END |
Arite operatörün kendisinden gelir; tek parametreli - tekli eksi olur. |
CREATE DATABASE LINK ad {USER|PASSWORD|DRIVER {FIREBIRD|POSTGRESQL|ODBC} [PARAMETERS '…']}… |
DRIVER zorunlu. |
DECLARE [EXTERNAL] FUNCTION ad <tip> [NULL] [, …] RETURNS {<tip> | PARAMETER n} ENTRY_POINT '…' MODULE_NAME '…' |
Parametreler adsız ve parantezsiz bir tip listesidir. |