Searching...
Sunday, February 16, 2014

SQL Server 2012 New Feature – Sequence Numbers

2:46 PM

Coba sedikit explorasi dengan sequence number di SQL Server 2012. Para developer mungkin tidak asing identity column pada saat kita akan membuat sebuah field pada sebuah column di sebuah table. dimana pada column tersebut kita bisa setup sebuah nilai identity column dan nilai increment nya.
Namun itu hanya berlaku pada 1 buah tabel, nah sekarang bagaimana caranya agar nilai yang berurut tersebut bisa kita sebar di beberapa tabel namun ? disini lah fungsi dari fitur Sequence Number dapat berperan.
Type data dari Sequence Number dapat diterapkan pada semua jenis data integer, namun jika sebuah sequence tidak di deklarasikan tipe datanya maka secara default dia akan memiliki type data BigInt.
Sebuah sequence Number memiliki ruang urutan mulai dari -2,147,483,648 sampai dengan 2,147,483,647. Jadi jika kita akan membuat Sequence Number yang memiliki pertambahan nilai 1 mulai dari -2,147,483,648 sampai dengan 2,147,483,647 dapat dibuat dengan cara
CREATE SEQUENCE Schema.SequenceName
    AS int
    INCREMENT BY 1 ;

jika kita akan membuat Sequence Number yang memiliki pertambahan nilai 1 mulai dari 1 sampai dengan 2,147,483,647 dapat dibuat dengan cara
CREATE SEQUENCE Schema.SequenceName
    AS int
    START WITH 1
    INCREMENT BY 1 ;

untuk lebih memperjelas penjelasan diatas, mari kita sama2 melakukan eksperimen dibawah ini.
Pertama yang kita lakukan adalah menentukan schema mana yang akan diterapkan Sequence Number. Misal saya akan gunakan database AdventureWorks2012 dengan schema TestSN. karena scehma TestSN tidak ada di database tersebut, maka saya bikin baru
Use AdventureWorks2012 ;
Go 

CREATE SCHEMA TestSN ;
  GO

setelah itu kita membuat Sequence Numbernya didalam Schema tersebut yang saya beri nama UrutTmbh1
Create SEQUENCE TestSN.UrutTmbh1 AS INT
    START WITH 10000 
    INCREMENT BY 1;
Go

anda dapat mencek nya hasil pembuatan sequence tersebut di Database AdventureWork2012 seperti gambar berikut
image
Saya akan coba terapkan Sequence ini pada 2 buah tabel. Saya coba buat 2 tabel contoh dulu
CREATE TABLE Employees
(
    EmployeeId INT NOT NULL PRIMARY KEY,
    Name NVARCHAR(255) NULL
);

CREATE TABLE Contractors
(
    ContractorId INT NOT NULL PRIMARY KEY,
    Name NVARCHAR(255) NULL
);

Setelah tabel diatas tercipta, mari kita masukkan 1 buah data masing-masing pada tabel tersebut dengan cara berikut :
INSERT INTO Employees (EmployeeId, Name)
   VALUES (NEXT VALUE FOR TestSN.UrutTmbh1, 'Jane');

INSERT INTO Contractors (ContractorId, Name)
   VALUES (NEXT VALUE FOR TestSN.UrutTmbh1, 'John');
Go

Tampak bahwa saya untuk memasukkan nilai EmployeeId pada tabel Employees dengan menggunakan klausa NEXT VALUE FOR. Bgitu juga dengan field Contractor Id pada table Contractor.
Jika kita coba lihat hasilnya adalah seperti berikut :
image
Tampak terbentuk sebuah urutan angka (Sequence number) pada 2 field yang berbeda dan berbeda tabel juga.
Demikian semoga dapat dipahami dan bermanfaat.

0 comments:

Post a Comment