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.
![](https://static.wixstatic.com/media/0fcaa4_2377da98bfa74df488e6fc17001403ed~mv2.png/v1/fill/w_980,h_593,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/0fcaa4_2377da98bfa74df488e6fc17001403ed~mv2.png)
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.
![](https://static.wixstatic.com/media/0fcaa4_f46a7d40df6e42199b65aa8fa918563e~mv2.png/v1/fill/w_980,h_142,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/0fcaa4_f46a7d40df6e42199b65aa8fa918563e~mv2.png)
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) )
![](https://static.wixstatic.com/media/0fcaa4_114e056b4fe54c38befceb0fbd74e010~mv2.png/v1/fill/w_497,h_548,al_c,q_85,enc_auto/0fcaa4_114e056b4fe54c38befceb0fbd74e010~mv2.png)
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.
![](https://static.wixstatic.com/media/0fcaa4_ab5c3afc947e4d17b3b67b27635fe6d7~mv2.png/v1/fill/w_474,h_50,al_c,q_85,enc_auto/0fcaa4_ab5c3afc947e4d17b3b67b27635fe6d7~mv2.png)
Default : UniqueId Database tarafından üretilir, dışarıdan bir değer alabilir. Bu mantıkta Bir function veya Sequence çalıştırılabilir.
![](https://static.wixstatic.com/media/0fcaa4_05c963aee581444ebd9c8ef96e78eefa~mv2.png/v1/fill/w_479,h_49,al_c,q_85,enc_auto/0fcaa4_05c963aee581444ebd9c8ef96e78eefa~mv2.png)
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.
![](https://static.wixstatic.com/media/0fcaa4_ee5d069d713d4b4e9364ccc8146bce98~mv2.png/v1/fill/w_376,h_138,al_c,q_85,enc_auto/0fcaa4_ee5d069d713d4b4e9364ccc8146bce98~mv2.png)
Comentarios