PostgreSQL Tabloda Kolon Kısıtlamaları

PostgreSQL Tabloda Kolon Kısıtlamaları,Tablo da kolon kısıtlamaları  verilerin genel olarak nasıl tutulacağını  tablodaki ilgili kolona boş değer girilip girilmemesi isteğini ,boş bir değer girilirse ne yapılacağını ,aynı veriyi birden fazla girilmesini istemediğimiz durumlarda vs kullanabiliriz.

NULL :

İlgili kolona  boş değer girilmesine izin verir. Kolon oluştururken kısıtlama girilmezse default da null parametresini alır.

 

create table personel( adres text  NULL)

NOT NULL:

İlgili kolona  boş değer girilmesine izin verilmez.

create table personel( TC_No integer  NOT NULL)

 

UNIQUE:

Adından da anlaşılacağı üzere kolon da benzersiz değerler tutmamıza fayda sağlar  yani UNIQUE eklenmiş kolona aynı değeri iki kez girmenize izin verilmez fakat burda dikkat edilmesi gereken  NULL değeri birden fazla tekrar edebilir .Bunun sebebi  NULL değerleri unique(benzersiz) olarak görmesidir.

 

 create table Konum( sehir UNIQUE)

 

CHECK :

Veri eklerken yada güncellerken CHECK parametresinden sonra yazdığınız değere göre veriyi kontrol eder.

 CREATE TABLE personel(dogum_tarihi date CHECK (dogum_tarihi>'1900-01-01')

 

PRIMARY KEY:

NOT NULL ve UNIQUE kısıtlamalarının birleşimidir. Primary key eklenen kolonlar da clustered index otomatik olarak oluşturulur.

 

create table personel( id serial  PRIMARY KEY)

REFERENCES:

Farklı bir tablodaki farklı bir kolonun veri tipini kısıtlar.

 

CREATE TABLE public.personel_dogum_tarihi
(
    id integer,
    dogum_tarihi date,
    p_id integer,
    CONSTRAINT personelfk FOREIGN KEY (p_id)
        REFERENCES public.personel (id) --MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
        NOT VALID
);

Yukarıdaki özellikleri kullanarak kendiniz de örnekler yapmanızı tavsiye ederim.

EXCLUDE

Bu parametre ile iki satır arasında karşılaştırmalarında kullanılır.

 

CREATE TABLE personel(
   ID INT PRIMARY KEY     NOT NULL,
   isim           CHAR(50),
   yaş            INT  ,
   adres        CHAR(50),
   maaş         REAL,
   EXCLUDE USING gist
   (isim WITH =,
   yaş WITH <>)
);

 

Yukarıdaki tablo da  yaşın aynı olma koşulunu girdiğimizden dolayı aynı isime ait farklı bir yaş insert edilmek istendiğinde hata dönecektir.

INSERT INTO personel VALUES(1, 'faruk', 29, 'Ankara', 1000.00 );

INSERT INTO personel VALUES(2, 'faruk', 29, 'Afyon', 2000.00 );

INSERT INTO personel VALUES(3, 'faruk', 50, 'Konya', 200.00 );

Son inserti eklemek istediğimizde aşağıdaki gibi hata dönecektir.

ERROR: HATA: uyuşmayan kayıt, “personel_isim_yaş_excl” exclusion kısıtlamasını ihlal etmektedir DETAIL: (isim, “yaş”)=(faruk , 50) anahtarı, mevcut (isim, “yaş”)=(faruk , 29) anahtarıyla uyuşmuyor.

NOT: Exclude komutu  kullanmadan önce btree_gist extensionını yüklemeniz gerekmektedir.

Loading