PostgreSQL GENERATED ALWAYS ile SERIAL farkı

PostgreSQL GENERATED ALWAYS ile SERIAL farkı, Hemen hemen her tablo oluşturan kişinin dikkatini çeken şeylerden birisidir. serial veri tipi önceden beri kullanılan veri tiplerinden birisidir fakat SQL standartı değildir.

Postgresql 10 sürümü ile gelen generated as identity  sql standartlarına uygundur.

 

create table t1 (id serial primary key);
create table t2 (id integer primary key generated always as identity);

Serial veri tipinde manuel olarak veri girilirken generated always de parametre verilmeden veri girilememektedir.

Örnek ile devam edelim:

Aynı kolonlara sahip iki ayrı veri tipleri ile iki ayrı kolon  oluşturalım.

create table t1 (id serial primary key);

create table t2 (id integer primary key generated always as identity);

Tablolarımıza sırayla insert yapalım.

Yukarıdaki gibi t1 tablomuza veri eklendi.

Aynı değeri t2 tablomuza insert etmeye çalışalım.

T2 tablomuzda hata verdi bunun sebebi genereated always parametresini eklediğinizde dışarıdan veri girişine izin vermemesidir ama benim kesinlikle etmem lazım derseniz aşağıdaki şekilde insert edebilirsiniz.

insert into t2 (id) overriding system value values (1) ;

 

Loading