Mengapa saya mendapatkan kesalahan saat memasukkan ketika IDENTITY_INSERT
diatur ke OFF?
Bagaimana cara mengaktifkannya dengan benar di SQL Server 2008? Apakah dengan menggunakan SQL Server Management Studio?
Saya telah menjalankan kueri ini:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Kemudian saya mendapatkan pesan kembali di konsol bahwa Perintah berhasil diselesaikan. Namun ketika saya menjalankan aplikasi, itu masih memberi saya kesalahan seperti di bawah ini:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Pemula
sumber
sumber
Jawaban:
Melalui SQL sesuai MSDN
Pesan kesalahan lengkap memberitahu Anda persis apa yang salah ...
sumber
Saya punya masalah di mana itu tidak memungkinkan saya untuk memasukkannya bahkan setelah mengatur IDENTITY_INSERT ON.
Masalahnya adalah bahwa saya tidak menentukan nama kolom dan untuk beberapa alasan tidak menyukainya.
Jadi pada dasarnya lakukan nilai INSERT INTO tbl (cols) penuh (vals)
sumber
Impor: Anda harus menulis kolom dalam
INSERT
pernyataanTidak benar.
Benar
sumber
Saya tahu ini adalah utas yang lebih tua tetapi saya baru saja menabrak ini. Jika pengguna mencoba menjalankan sisipan pada kolom Identity setelah beberapa sesi lainnya Set IDENTITY_INSERT ON, maka ia terikat untuk mendapatkan kesalahan di atas.
Mengatur nilai Sisipkan Identitas dan perintah Sisipkan DML berikutnya harus dijalankan oleh sesi yang sama.
Di sini @Beginner sedang mengatur Identity Insert ON secara terpisah dan kemudian menjalankan sisipan dari aplikasinya. Itu sebabnya dia mendapat Kesalahan di bawah ini:
sumber
Ini kemungkinan ketika Anda memiliki bidang KUNCI UTAMA dan Anda memasukkan nilai yang menduplikasi atau Anda memiliki flag INSERT_IDENTITY diatur ke pada
sumber
Tampaknya perlu untuk meletakkan
SET IDENTITY_INSERT Database.dbo.Baskets ON;
sebelum setiapINSERT
batch pengiriman SQL .Anda dapat mengirim beberapa
INSERT ... VALUES ...
perintah dimulai dengan satuSET IDENTITY_INSERT ... ON;
string di awal. Hanya saja, jangan menempatkan pemisah batch antara.Saya tidak tahu mengapa
SET IDENTITY_INSERT ... ON
berhenti bekerja setelah blok pengiriman (misalnya:.ExecuteNonQuery()
dalam C #). Saya harus meletakkanSET IDENTITY_INSERT ... ON;
lagi di awal string perintah SQL berikutnya.sumber
Opsi lain adalah di mana Anda memiliki tabel seperti 'ketik' atau 'status', misalnya, OrderStatus, di mana Anda selalu ingin mengontrol nilai Id, membuat kolom Id (Kunci Utama) tanpa menjadikannya kolom Identity adalah tempat pertama.
sumber
Anda perlu menambahkan perintah 'go' setelah Anda mengatur memasukkan identitas. Contoh:
sumber