SQL Server’da Cannot Insert Explicit Value for Identity Column in Table ‘Tablename’ When IDENTITY_INSERT is Set to OFF Hatası
Herkese merhaba,
Bu yazıda sizlere SQL Server’da Cannot insert explicit value for identity column in table ‘Tablename’ when IDENTITY_INSERT is set to OFF hatasından bahsedeceğim.
SQL Server’da bazı durumlarda Cannot insert explicit value for identity column in table ‘Tablename’ when IDENTITY_INSERT is set to OFF hatası alabilirsiniz.
Bu hata otomatik identity olan bir tabloya kendimiz bir ID insert etmeye çalıştığınız zaman ortaya çıkan bir hatadır.
Çıkan hata yukarıdaki gibidir. Hangi tabloda işlem yapıyorsanız o tabloyu belirterek hatayı gösterir.
Benim insert kodum aşağıdaki gibiydi. Sizin daha farklı olabilir.
INSERT INTO dbo.OgrenciTablosu (OgrenciId, OgrenciAd, OgrenciNot)
VALUES (0, -- OgrenciId - int
N'Yavuz', -- OgrenciAd - nvarchar(50)
50 -- OgrenciNot - int
)
Bu kodda görüldüğü üzere OgrenciId alan identity bir alan ve elle ekleme yapmaya çalıştık. Bu yüzden hata oluştu.
Hatayı düzeltmenin iki yolu var.
1-) Yol
INSERT INTO dbo.OgrenciTablosu (OgrenciAd, OgrenciNot)
VALUES (N'Yavuz', -- OgrenciAd - nvarchar(50)
50 -- OgrenciNot - int
)
Insert kısmından OgrenciId kısmını çıkarmaktır. Yukarıdaki kod ile arasındaki farkı inceleyerek anlamanızı öneriyorum.
2-) Yol
SET IDENTITY_INSERT OgrenciTablosu ON;
INSERT INTO dbo.OgrenciTablosu (OgrenciId, OgrenciAd, OgrenciNot)
VALUES (5, 'Mehmet', 65)
SET IDENTITY_INSERT OgrenciTablosu OFF;
Set Identity_Insert kodunu belirtilen tablo için On yapmak yani açmaktır. Sonra işimiz bitince eski haline döndürmek için Off yapıp kapatmalıyız.
Yukarıdaki iki kodu ben kendi tablom için yaptım. Sonucu sizlerle paylaşıyorum. Siz de kendi tablolarınız için deneme işlemler yapıp sonuçları izleyebilirsiniz.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.