İSİM¶
CREATE OPERATOR - yeni bir işleç tanımlar
KULLANIM¶
CREATE OPERATOR isim (
PROCEDURE = işlev_ismi
[, LEFTARG = soltaraf_türü ] [, RIGHTARG = sağtaraf_türü ]
[, COMMUTATOR = eşittir_işleci ] [, NEGATOR = değil_işleci ]
[, RESTRICT = sınırlama_işlevi ] [, JOIN = katılım_işlevi ]
[, HASHES ] [, MERGES ]
[, SORT1 = sol_sıralama_işleci ] [, SORT2 = sağ_sıralama_işleci ]
[, LTCMP = küçüktür_işleci ] [, GTCMP = büyüktür_işleci ]
)
AÇIKLAMA¶
CREATE OPERATOR isim adında yeni bir işleç
tanımlar. İşlecin sahibi komutu
çalıştıran kullanıcı
olacaktır. Eğer bir şema ismi belirtilmişse,
işleç belirtilen şemada oluşturulur. Aksi takdirde
o an geçerli olan şemada oluşturulur.
İşlecin ismi en fazla NAMEDATALEN-1
(öntanımlı 63) karakter içerebilir ve sadece
şu karakterlere izin verilir:
+ - * / < > = ~ ! @ # % ^ & | ` ?
İsim seçimi ile ilgili bir kaç sınırlama daha
vardır:
- ·
- -- ve /* dizgeleri açıklama
başlangıcını gösterdiğinden,
işleç isminde bulunamazlar.
- ·
- Aşağıdaki karakterlerden en az birini
içermedikçe, bir çok karakterli işleç
ismi + veya - ile bitemez.
-
Örneğin, @- bir işleç ismi olabilirken, *- bir
işleç ismi olamaz. Bu sınırlama sayesinde,
işleç ve terimler arasında boşluk
bırakılmasa bile PostgreSQL, SQL uyumlu komutları
çözümleyebilir.
!= işleci girdide, <> işleci olarak ele
alınır, dolayısıyla bu iki isim daima
eşdeğerdir.
En azından
LEFTARG ve
RIGHTARG'dan biri
tanımlanmalıdır. İki terimliler için her
ikisi de tanımlanmalıdır. Artçıl
tekterimlilerde sadece
LEFTARG, öncül tekterimlilerde
sadece
RIGHTARG tanımlanmalıdır.
işlev_ismi işlevi
CREATE FUNCTION
kullanılarak evvelce türleri belirtilerek doğru
sayıda argümanla (bir ya da iki)
tanımlanmış olmalıdır.
Diğer deyimler isteğe bağlı işleç
eniyileme deyimleridir.
http://www.postgresql.org/uygulamalar/pgsql/xoper-optimization.html adresinde
bunların anlamları ayrıntılı olarak
anlatılmıştır.
PARAMETRELER¶
- isim
- Tanımlanacak işlecin ismi. İzin verilen karakterler
yukarıda açıklanmıştı.
İsim, CREATE OPERATOR myschema.+ (...)
örneğinde olduğu gibi şema nitelemeli
olabilir. Değilse, işleç o anki şemada
oluluşturulur. Aynı şema içinde, farklı
veri türleri ile işlem yapan iki işlecin ismi
aynı olabilir.
- işlev_ismi
- Bu işleci gerçeklemede kullanılan işlev.
- soltaraf_türü
- İşlecin sol tarafındaki terimin veri
türü. Bu seçenek öncül tekterimlilerde
atlanır.
- sağtaraf_türü
- İşlecin sağ tarafındaki terimin veri
türü. Bu seçenek artçıl tekterimlilerde
atlanır.
- öndeç_işleç
- Bu işlecin öndeci.
- değil_işleci
- Bu işlecin olumsuzlayıcısı.
- sınırlama_işlevi
- Bu işleç için sınırlama seçici
işlev.
- katılım_işlevi
- Bu işleç için katılım seçici
işlev.
- HASHES
- Bu işlecin bir çırpılamalı
katılımı desteklediğini belirtir.
- MERGES
- Bu işlecin katıştırmalı
katılımı desteklediğini belirtir.
- sol_sıralama_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin sol
taraf veri türünü sıralar.
- sağ_sıralama_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin
sağ taraf veri türünü sıralar.
- küçüktür_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin girdi
veri türlerini karşılaştırır.
- büyüktür_işleci
- Bu işleç katılımı destekliyorsa,
büyüktür işleci bu işlecin girdi veri
türlerini karşılaştırır.
İsteğe bağlı başka bir argüman ya da
eşittir_işleci'inde bir şema nitelemeli isim
belirtmek için
OPERATOR() sözdizimini kullanın.
Örnek:
COMMUTATOR = OPERATOR(myschema.===) ,
EK BİLGݶ
Daha fazla bilgi için:
http://www.postgresql.org/uygulamalar/pgsql/xoper.html
Bir veritabanındaki kullanıcı tanımlı
işleçleri silmek için
DROP OPERATOR
[
drop_operator(7)] kullanılır. Bir veritabanındaki
işleçlerde değişiklik yapmak için
ALTER
OPERATOR [
alter_operator(7)] kullanılır.
ÖRNEKLER¶
Aşağıdaki örnekte, box veri türü
için alan eşitliği ile ilgili yeni bir
işleç tanımlanmaktadır.
CREATE OPERATOR === (
LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <<<,
SORT2 = <<<
-- Sıralama işleçleri verildiğinden, MERGES uygulanır.
-- LTCMP için < ve GTCMP için > varsayılmıştır.
);
UYUMLULUK¶
CREATE OPERATOR bir PostgreSQL oluşumudur. SQL standardında
kullanıcı tanımlı işleçler
için bir bahis yoktur.
İLGİLİ BELGELER¶
ALTER OPERATOR [
alter_operator(7)],
CREATE OPERATOR CLASS [
create_operator_class(7)],
DROP OPERATOR [
drop_operator(7)].
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Nisan 2005