Bugünkü yazımda sizlere SEQUENCE ile IDENTITY COLUMN
arasındaki farklılıkları anlatmak istiyorum. Bircoğumuz SSMS açınca içinde
SEQUENCE objesinin farkında değilizdir. Oracle uzun zamandan buyana var olan bu
obje SQL Server 2012 ile hayatımıza girmiştir.
SEQUENCE tanımlanan değerler arasında numeric
ve sıralı artan veya azalan sayılar üretilir. Bir SEQUENCE birden fazla tablo için
birbirini takip eden sayılar üretilebilir.
CREATE SEQUENCE MySEQUENCE
START WITH 1
INCREMENT BY 1 ;
GO
SEQUENCE Kullanımı
SELECT NEXT VALUE FOR MySequence
SELECT NEXT VALUE FOR MySequence
IDENTITY
Sütunlar ise otomatik artan sütunlardır.
SQL Serverda bir alana IDENTITY olarak özellik
tanımladığımızda, ilgili tabloya herhangi bir satır eklediğimizde bu IDENTITY
özelliği tanımlanmış sütun değeri otomatik olarak artacaktır. IDENTITY SEED başlangıç miktarı , IDENTITY INCREMENT ise artış miktarıdır.
CREATE TABLE MyIndentity
(
NameID int IDENTITY(1,1),
FirstName varchar (25),
MiddleInt char(1),
LastName varchar(40)
);
INSERT MyIndentity
(FirstName, MiddleInt, LastName)
VALUES
('Joe', 'K', 'Smith');
INSERT MyIndentity
(FirstName, MiddleInt, LastName)
VALUES
('Jane', 'L', 'Doe');
SELECT * FROM
MyIdentity
Nitelik
|
Sequence
|
Identity
|
Object Seviyesi
|
Database
|
Table
|
Limit
|
Limit
Belirlenebilir
|
INT
ve BIG INT Data Tipinde Limitlidir
|
Values
|
Uygulamalar
NEXT VALUE FOR ile çağrılabilir
|
Bir
tabloya INSERT olduğunda
oluşur.
|
Miktar
|
Kurulumda INCREMENT olarak beyan edildi ve herhangi bir şey olabilir.
Artan sayıların yerine dizinin alçalmasına neden
olacak negatif bir sayı olabilir.
|
Kurulumda
INCREMENT olarak beyan edildi ve herhangi bir pozitif sayı olabilir, sayılar
yükselir
|
Kapsam
|
BirTransaction
kapsamı dışında oluşturuldu
|
Bir Transaction
Oluşturuldu
|
Numara Atama
|
Sıralar
önceden tahsis edilebilir (örnek bana 1-25 atar)
|
Önceden
ayrılamaz.
|
Boşluklar
|
Boşluklar
Verilebilir
|
Boşluklar
Verilebilir
|
Benzersizlik
|
Numaralar
Sıfırlanıp yeniden kullanılabilir
|
Benzersizdir.
Primary Key olarak kullanılabilir.
|