Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana SQL Server menghasilkan nilai dalam kolom identitas?

Anda membuat kesalahan umum dengan mengasumsikan pesanan dalam tabel. Tabel tidak memiliki urutan. Hanya hasil yang memiliki urutan, yang tidak ditentukan kecuali ORDER BY eksplisit ditentukan.

Anda mungkin mengajukan pertanyaan yang berbeda:bagaimana nilai yang dihasilkan identitas ditetapkan dalam kasus penyisipan bersamaan? Jawabannya sederhana:tidak masalah . Dan jika Anda membuat asumsi tentang pesanan maka kode Anda rusak. Hal yang sama berlaku untuk kesenjangan. Aplikasi Anda akan berfungsi meskipun identitas yang dihasilkan benar-benar acak, dan aplikasi yang ditulis dengan benar akan bekerja jika identitasnya benar-benar acak. Gunakan SCOPE_IDENTITY() untuk mengambil identitas yang terakhir dimasukkan. Lebih baik lagi, gunakan OUTPUT klausa INSERT , ini juga berfungsi untuk penyisipan multi-baris.

Sebagai catatan:identitas dihasilkan dalam urutan operasi memperoleh akses ke aliran log .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengenkripsi tabel database di SQL Server 2008

  2. Perbedaan dua tanggal waktu di sql server

  3. Memaksa code-first untuk selalu menginisialisasi database yang tidak ada?

  4. Menyimpan pesan galat SqlServer di C#

  5. adalah tipe yang tidak valid untuk digunakan sebagai kolom kunci dalam indeks