9 Haziran 2022 Perşembe

Sütun Tipleri - IDENTITY (Otomatik Sayı Üretir)

Giriş
Açıklaması şöyle
It is recommended to use IDENTITY instead since SERIAL has some weird behaviors.
Bu sütunlara NOT NULL + PRIMARY KEY + UNIQUE gibi özellikler de atanabilir.

Örnek
Şöyle yaparız
CREATE TABLE IF NOT EXISTS entity (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    ...
)

# To see the sequence
SELECT * FROM pg_sequence WHERE seqrelid = 'entity_id_seq'::regclass;
IDENTITY Kullanımının Bazı Dezavantajları
Not : Bazıları IDENTITY yerine UUID kullanılması öneriyor. 
1. İki tane tablonun birleştirilmesinde problem oluyor. Bir açıklama şöyle
I’ve seen this over and over for the last 30 years, people let the database set the ID or Primary Key of a table from the database, at first glance this sounds simple and everyone knows you should let the database do the heavy lifting, with a numeric “Sequence” number you need to let the database do the work since there may be multiple applications or threads creating new records in the table. DON”T DO IT!

First, if and when you need to merge two databases that now have the same Primary Key ID values for the same table, your screwed. You have to come up with a scheme to change the ID’s, maybe adding 10,000 to each ID, what if you have more than 10,000 rows? The you also have to update all children records, maybe not that easy if you have constraints defined in the database.
2. Güvenlik Açıkları
Eğer bir Primary Key değerinin 100 olduğunu biliyorsam bir sonrakinin de 101 olacağını biliyorum. Bunu sorgulayarak bir güvenlik açığından faydalanabilirim. 

Hiç yorum yok:

Yorum Gönder