Skip to main content

“Cannot insert explicit value for identity column in table ‘tablename’ when IDENTITY_INSERT is set to OFF.” Hatası

Auto Identity olan bir tabloya kendiniz bir ID insert etmeye  çalıştığınız zaman  aşağıdaki hatayı veriyor.

Cannot insert explicit value for identity column in table 'tablename' when IDENTITY_INSERT is set to OFF.

Çözüm:

SET IDENTITY_INSERT Table_Name ON;

INSERT INTO (ID,name,password) VALUES (15,'test','123456')

SET IDENTITY_INSERT Table_Name OFF;

User-Defined Functions (Kullanıcı-Tanımlı Fonksiyonlar)

Sql sisteminde hazır gelen birçok fonksiyon vardır. Bunlara  “System Functions” diyoruz. Birde bizim kendi oluşturduğumuz fonksiyonlar var. Bunlara da  “User Defined Functions (Kullanıcı-Tanımlı Fonksiyonlar)” diyoruz. Fonksiyonların asıl amacı elimizdeki veriyi hızlıca manipüle etmeye yarar.

 

SQL’de 3 çeşit fonksiyon vardır.

1.Inline Table-values Function (Tablo olarak değer döndürür)

2.Multi Statement table-values Function (Tablo olarak değer döndürür)

3.Scalar-values Function (Geriye tek bir değer döndürür)

“Scalar” fonksiyonlar tanımlanırken değil ama çağırılırken ikinci kısmıyla birlikte yani başında “dbo.“ (Database Owner – Veritabanı Sahibi) sözcüğü ile çağırmak zorundadır. “Table Valued” fonksiyonlarında böyle bir zorunluluk yoktur. Ayrıca ”Scalar” ve “Multistatement Table Valued” fonksiyonlarda “begin-end” sözcüklerinin kullanılması şarttır.

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
ALTER FUNCTION [dbo].[FN_KDVDahilFiyat]
(
@fiyat float,
@kdv float
)
RETURNS float
AS
BEGIN

declare @KDVToplam float

SET @KDVToplam =(@fiyat*(CAST(@kdv AS FLOAT)/100))+@fiyat

-- Return the result of the function
RETURN @KDVToplam

END