Dalam database SQL Server, ada tiga fungsi penting yang digunakan untuk mengambil nilai yang terkait dengan bidang kenaikan otomatis: IDENTITY, SCOPE_IDENTITY(), dan IDENT_CURRENT(). Meskipun memiliki tujuan yang sama, fungsi-fungsi ini memiliki karakteristik dan kasus penggunaan yang berbeda. Artikel ini bertujuan untuk mengeksplorasi perbedaan di antara keduanya dan memberikan pemahaman yang jelas tentang fungsi masing-masing.

  1. IDENTITAS

Atribut IDENTITY digunakan untuk mendefinisikan bidang kenaikan otomatis dalam tabel. Misalnya, jika tabel menyertakan kolom kenaikan otomatis bernama “ID”, atribut IDENTITY menentukan properti ini. Atribut IDENTITY secara otomatis menambah nilai bidang dengan setiap catatan baru yang ditambahkan ke tabel. Biasanya, tipe data kolom IDENTITY adalah INT atau BIGINT.

2. SCOPE_IDENTITY()

Fungsi SCOPE_IDENTITY() mengembalikan nilai kenaikan otomatis terakhir yang dihasilkan oleh pernyataan INSERT. Ini beroperasi dalam lingkup konteks eksekusi saat ini dalam tabel yang terpengaruh. Dalam istilah yang lebih sederhana, SCOPE_IDENTITY() hanya akan mengembalikan nilai kenaikan otomatis yang dihasilkan oleh operasi INSERT terbaru.

Perhatikan contoh berikut:

INSERT INTO MyTable (Name) VALUES ('John');
SELECT SCOPE_IDENTITY();

Dalam cuplikan kode di atas, setelah operasi INSERT membuat catatan baru di tabel MyTable, fungsi SCOPE_IDENTITY() akan mengembalikan nilai kenaikan otomatis yang terkait dengan catatan spesifik tersebut.

3. IDENT_CURRENT()

Fungsi IDENT_CURRENT() mengambil nilai terkini dari bidang kenaikan otomatis untuk tabel tertentu. Hal ini sangat berguna ketika Anda perlu mendapatkan nilai kenaikan otomatis untuk tabel tertentu.

Contohnya:

SELECT IDENT_CURRENT('MyTable');

Dalam contoh yang diberikan, fungsi IDENT_CURRENT() akan mengembalikan nilai kenaikan otomatis tabel MyTable saat ini.

Perbedaan

Sekarang mari kita rangkum perbedaan antara ketiga fungsi ini:

  • IDENTITY adalah atribut yang mendefinisikan bidang kenaikan otomatis, sedangkan SCOPE_IDENTITY() dan IDENT_CURRENT() adalah fungsi.
  • SCOPE_IDENTITY() mengembalikan nilai kenaikan otomatis terbaru yang dihasilkan oleh operasi INSERT, sedangkan IDENT_CURRENT() mengambil nilai kenaikan otomatis saat ini untuk tabel tertentu.
  • SCOPE_IDENTITY() beroperasi dalam lingkup konteks eksekusi saat ini, sedangkan IDENT_CURRENT() berfokus pada tabel tertentu.

Kesimpulannya, IDENTITY, SCOPE_IDENTITY(), dan IDENT_CURRENT() adalah komponen penting ketika bekerja dengan bidang kenaikan otomatis di database SQL Server. Sementara IDENTITY mendefinisikan atribut, SCOPE_IDENTITY() mengambil nilai dalam konteks eksekusi, dan IDENT_CURRENT() memungkinkan Anda memperoleh nilai kenaikan otomatis saat ini untuk tabel tertentu. Memahami perbedaan antara fungsi-fungsi ini sangat penting untuk mengelola dan mengambil nilai yang bertambah secara otomatis secara efisien di SQL Server.

Saya harap artikel ini bermanfaat bagi Anda. Selamat membuat kode!