-
@@IDENTITY
mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel apa pun di sesi saat ini, di semua cakupan. Anda harus berhati-hati di sini , karena ini lintas cakupan. Anda bisa mendapatkan nilai dari pemicu, bukan dari pernyataan Anda saat ini.
-
SCOPE_IDENTITY()
mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel apa pun di sesi saat ini dan cakupan saat ini. Umumnya yang ingin Anda gunakan .
-
IDENT_CURRENT('tableName')
mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel tertentu dalam sesi apa pun dan cakupan apa pun. Ini memungkinkan Anda menentukan tabel mana yang Anda inginkan nilainya, jika dua di atas tidak sesuai dengan yang Anda butuhkan (sangat jarang ). Juga, seperti yang disebutkan @Guy Starbuck, "Anda bisa menggunakan ini jika Anda ingin mendapatkan nilai IDENTITY saat ini untuk tabel yang belum Anda masukkan catatannya."
-
OUTPUT
klausa dari INSERT
pernyataan akan membiarkan Anda mengakses setiap baris yang dimasukkan melalui pernyataan itu. Karena dicakup pada pernyataan spesifik, ini lebih mudah daripada fungsi lain di atas. Namun, ini sedikit lebih bertele-tele (Anda harus memasukkan ke dalam variabel tabel/tabel temp dan kemudian menanyakannya) dan itu memberikan hasil bahkan dalam skenario kesalahan di mana pernyataan itu dibatalkan. Karena itu, jika kueri Anda menggunakan rencana eksekusi paralel, ini adalah satu-satunya metode yang dijamin untuk mendapatkan identitas (kependekan dari mematikan paralelisme). Namun, itu dieksekusi sebelum pemicu dan tidak dapat digunakan untuk mengembalikan nilai yang dihasilkan pemicu.