top of page
Yazarın fotoğrafıŞerif Aydın

PostgreSQL GENERATED ALWAYS AS IDENTITY

Database süreçlerinde tablolar içerisinde, unique olacak şekilde ve belirlenebilir bir mantıkta artan kimlik'lere ihtiyacımız olabilir.


Örneğin İrsaliye oluşturacağız ve sistemsel bir Id üretmemiz gerekiyor, Sequence ler kullanarak bu süreçlerimizi yönetebiliriz.


PostgreSQL içerisinde Column larda GENERATED ALWAYS AS IDENTITY özelliğini aktif ederek ve kurallar girerek Unique olacak şekilde belli oranda artmasını sağladığımız kimlikler oluşturabiliyoruz.


Oluşturduğumuz UniqueId ler; Data tipi olarak Smallint, integer veya Bigint olabilir.


Aşağıdaki gibi bir örnek tablo oluşturalım.

CREATE TABLE IF NOT EXISTS public.color ( color_id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), color_name character varying COLLATE pg_catalog."default" NOT NULL, "GenerateId" integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 10 START 1000 MINVALUE 1000 MAXVALUE 2147483647 CACHE 1 ), CONSTRAINT color_pkey PRIMARY KEY (color_id) )

GeneratedId column u için GENERATED ALWAYS AS IDENTITY çalışması yapmak istediğimizde karşımıza bazı özellikler gelmektedir.


Always : UniqueId Database tarafından üretilir, dışarıdan bir değer almaz.

Default : UniqueId Database tarafından üretilir, dışarıdan bir değer alabilir. Bu mantıkta Bir function veya Sequence çalıştırılabilir.

Increment : Kaçarlı şekilde arttırılacağı bilgisini belirtiyoruz.
Start : Tablo için UniqueId nin numarasının kaçtan başlayacağı bilgisini buradan belirtebiliyoruz.

GENERATED ALWAYS AS IDENTITY ( INCREMENT 10 START 1000 MINVALUE 1000 );

Tablo içerisine öncesinde 1 şeklinde bir kayıt girdim, sonrasında GENERATED ALWAYS AS IDENTITY özelliği ni atadım ve sonrasında 1000 den başladı ve birer birer arttırarak kayıtları oluşturdu.






49 görüntüleme0 yorum

Son Yazılar

Hepsini Gör

Comments


bottom of page