无法将值NULL插入列'ID',表'contoh.dbo.data'

时间:2018-02-02 07:49:59

标签: sql sql-server stored-procedures

alter PROCEDURE Createdata  
prosedur
        @nama varchar(20),  
        @alamat varchar(50)      
AS
BEGIN TRANSACTION  
declare @id int  
INSERT INTO data  (nama, alamat)
    VALUES (@nama,@alamat)

SET @id = SCOPE_IDENTITY()  
SELECT 
       nama = @nama,
       alamat = @alamat
FROM data 

WHERE  ID = @id

COMMIT  
GO

============================================== < / p> 请帮助我,我在其他数据库中使用这个存储过程来完成它的工作 但我在数据库“contoh”中运行此存储过程不起作用

错误是:

  

无法将值NULL插入列“ID”表中   'contoh.dbo.data';列不允许空值。 INSERT失败。该   声明已被终止。

2 个答案:

答案 0 :(得分:1)

显然,Id列不允许空值,并且在应用插入时您没有指定它。

INSERT INTO data  (nama, alamat) VALUES (@nama,@alamat)

我猜,Id列是主键,您可以将其定义为自动增量。因此,使用IDENTITY(1,1)Id列应用自动增量来创建表格;

CREATE TABLE data (
    Id int IDENTITY(1,1) NOT NULL,
    nama nvarchar(20),
    alamat nvarchar(50),
    PRIMARY KEY (Id)
);

答案 1 :(得分:0)

你的问题在这里:

INSERT INTO data (nama, alamat) VALUES (@nama,@alamat)

data具有列标识,它是您的主键,因此无法使用NULL作为其值创建。你可能想要事先获取id,然后调用:

INSERT INTO data (id, nama, alamat) VALUES (@id,@nama,@alamat)