Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11405|Jawab: 0

[Kiat] sql mendapatkan nilai kunci utama setelah menunggu INSERT

[Salin tautan]
Diposting pada 05/05/2015 17.35.51 | | |

Fungsi pengambilan nilai identifikasi di SQL SERVER 2000     
  Di SQL Server 2000, kolom identitas ditentukan oleh IDENTITY, dan berikut ini terkait dengan mendapatkan nilai identitas rekaman terakhir yang disisipkan   
   
  Contoh ilustrasi fungsi off     
   
          Di SQL Server, Anda dapat menggunakan SCOPE_IDENTITY(), @@IDENTITY, IDENT_CURRENT() untuk mendapatkan nilai rekaman terakhir yang dimasukkan, dan perbedaan di antara keduanya adalah:   
  SCOPE_IDENTITY() mengembalikan nilai IDENTITY terakhir yang disisipkan di dalam kolom IDENTITY dalam cakupan yang sama. Ruang lingkup adalah modul - prosedur tersimpan, pemicu, fungsi   
   
  Angka atau kelompok. Oleh karena itu, jika dua pernyataan berada dalam prosedur, fungsi, atau batch tersimpan yang sama, keduanya berada dalam cakupan yang sama.   
  @@IDENTITY Mengembalikan nilai identifikasi terakhir yang dihasilkan di semua tabel di sesi saat ini   
  IDENT_CURRENT() mengembalikan nilai identifikasi terakhir yang dihasilkan untuk tabel yang ditentukan dalam sesi apa pun dan cakupan apa pun   
  Berikut adalah contoh untuk menggambarkan perbedaan mereka     
   
  -- a) Kode sampel     
  --   ===========================================   
  -- Buat tabel pengujian   
  --   ===========================================   
  GUNAKAN tempdb   
  PERGI   
   
  BUAT TABEL t1(id int IDENTITY, col int)   
  MASUKKAN t1 PILIH 1   
  SERIKAT SEMUA PILIH 2   
  BUAT TABEL t2(id int IDENTITY, col int)   
  PERGI   
   
  BUAT TR_insert_t2 PEMICU PADA t2   
  UNTUK MEMASUKKAN   
  SEBAGAI   
          MASUKKAN t1 PILIH 3   
  PERGI     
   
  --   ===========================================   
  - Uji tiga fungsi: 1   
  --   ===========================================   
  MASUKKAN NILAI T2(1)   
  PILIH [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),   
          [@@IDENTITY]=@@IDENTITY,   
          [IDENT_CURRENT() Untuk t1]=IDENT_CURRENT(N't1'),   
          [IDENT_CURRENT() Untuk t2]=IDENT_CURRENT(N't2')   
   
  /*--Hasil   
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() Untuk t1 IDENT_CURRENT() Untuk t2                                         
  ------------------   ------------   --------------------------   -----------------------   
  1                                     3                         3                                                     1   
   
  (Jumlah baris yang terpengaruh adalah 1 baris)   
  --*/   
  PERGI   
   
  --   ===========================================   
  - Uji tiga fungsi: 2   
  --   ===========================================   
  MASUKKAN NILAI T1(10)   
  PILIH [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),   
          [@@IDENTITY]=@@IDENTITY,   
          [IDENT_CURRENT() Untuk t1]=IDENT_CURRENT(N't1'),   
          [IDENT_CURRENT() Untuk t2]=IDENT_CURRENT(N't2')   
   
  /*--Hasil   
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() Untuk t1 IDENT_CURRENT() Untuk t2                                         
  ------------------   ------------   --------------------------   -----------------------   
  4                                     4                         4                                                     1   
   
  (Jumlah baris yang terpengaruh adalah 1 baris)   
  --*/   
  PERGI   
   
  --   ===========================================   
  - Uji tiga fungsi: 3   
  -- ** Buka koneksi baru dan jalankan kode berikut **   
  --   ===========================================   
  PILIH [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),   
          [@@IDENTITY]=@@IDENTITY,   
          [IDENT_CURRENT() Untuk t1]=IDENT_CURRENT(N't1'),   
          [IDENT_CURRENT() Untuk t2]=IDENT_CURRENT(N't2')   
   
  /*--Hasil   
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() Untuk t1 IDENT_CURRENT() Untuk t2                                         
  ------------------   ------------   --------------------------   -----------------------   
  NULL NULL 4 &n     
   
  --===========================================   
  -- Hapus lingkungan pengujian   
  --   ===========================================   
  DROP TABLE t1,t2     
   
  -- b) Deskripsi hasil kode     
  Seperti yang Anda lihat dari kode di atas:   
  IDENT_CURRENT() selalu mengembalikan nilai terakhir yang diidentifikasi yang dimasukkan dalam tabel yang ditentukan   
  @@IDENTITY Mengembalikan nilai identitas sesi saat ini, baik dalam cakupan yang sama atau tidak, dalam pengujian 1 dan 2, dapat dilihat bahwa ia mengembalikan nilai identitas dari rekaman yang dimasukkan dalam pemicu, dan di   
   
  Dalam Pengujian 3, NULL dikembalikan karena tidak ada catatan penyisipan dalam sesi saat ini   
  SCOPE_IDENTITY() mengembalikan nilai identifikasi dari cakupan yang sama dari sesi saat ini, jadi dalam pengujian 1, 2, mengembalikan nilai yang tidak terpengaruh oleh pemicu, dan dalam pengujian 3, karena sesi saat ini tidak diinterpolasi   
   
  record, sehingga mengembalikan NULL





Mantan:Mengapa semua orang pergi ke liburan May Day?
Depan:Apa perbedaan antara SCOPE_IDENTITY() ditulis sebelum dan sesudah di t-sql?
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com