自己写的运行时出错,错误提示为:
An explicit value for the identity column in table 'incaserecords' can only be specified when a column list is used and IDENTITY_INSERT is ON.不明白是什么意思
An explicit value for the identity column in table 'incaserecords' can only be specified when a column list is used and IDENTITY_INSERT is ON.不明白是什么意思
如果你真的想插入(不是让系统自动生成,你要先运行
SET IDENTITY_INSERT incaserecords ON
去除标识,就行了.不然麻烦很多.
代码......
SET IDENTITY_INSERT incaserecords OFF
create proc prc_inrecord @in_no int,@isbn char(10),@pubname nvarchar(30),@inquantity int,@inprice float,@indiscount float,@inmayang float,@inshiyang float,@date smalldatetime,@operatorname nvarchar(10),@istuihuo char(2)
as
begin
declare @operatorid char(4)
declare @merchandiseid int
begin
select @operatorid = operatorid from operators where operatorname = @operatorname
select @merchandiseid = merchandisesid from merchandises where isbn = @isbn
insert into incaserecords values(@in_no,@merchandiseid,@inquantity,@inprice,@indiscount,@inmayang,@inshiyang,@date,@operatorid,@istuihuo)
update incases set inquantity = inquantity + @inquantity,inmayang = inmayang + @inmayang,inshiyang = inshiyang + @inshiyang where incaseno = @in_no
update merchandises set kucun = kucun + @inquantity where merchandisesid = @merchandiseid
end
end
................
SET IDENTITY_INSERT incaserecords OFF中间的代码指的是什么代码捏?
as
begin
declare @operatorid char(4)
declare @merchandiseid int
begin
select @operatorid = operatorid from operators where operatorname = @operatorname
select @merchandiseid = merchandisesid from merchandises where isbn = @isbn
SET IDENTITY_INSERT incaserecords ON
insert into incaserecords values(@in_no,@merchandiseid,@inquantity,@inprice,@indiscount,@inmayang,@inshiyang,@date,@operatorid,@istuihuo)
SET IDENTITY_INSERT incaserecords OFF
update incases set inquantity = inquantity + @inquantity,inmayang = inmayang + @inmayang,inshiyang = inshiyang + @inshiyang where incaseno = @in_no
update merchandises set kucun = kucun + @inquantity where merchandisesid = @merchandiseid
end
end
(
incaseno int identity(10000000,1) constraint pk_incaseno primary key,
pubid char(4) not null references publishers(pubid),
inquantity int not null,
inmayang float not null,
inshiyang float not null,
indate smalldatetime not null,
operatorid char(4) not null references operators(operatorid),
istuihuo nvarchar(2) not null
)
create table incaserecords
(
incaserecordno int identity(10000000,1) constraint pk_inr primary key,
incaseno int not null references incases(incaseno),
merchandisesid int not null references merchandises(merchandisesid),
inquantity int not null,
incasemayang float not null,
incaseshiyang float not null,
indate smalldatetime not null,
operatorid char(4) not null references operators(operatorid),
istuihuo nvarchar(2) not null
)
insert into incaserecords values(@in_no,@merchandiseid,@inquantity,@inprice,@indiscount,@inmayang,@inshiyang,@date,@operatorid,@istuihuo)改成:
insert into incaserecords values(@merchandiseid,@inquantity,@inprice,@indiscount,@inmayang,@inshiyang,@date,@operatorid,@istuihuo)或者SET IDENTITY_INSERT incaserecords ON
insert into incaserecords ( incaserecordno ,
incaseno ,
merchandisesid ,
inquantity ,
incasemayang ,
incaseshiyang ,
indate ,
operatorid ,
istuihuo
) values(@in_no,@merchandiseid,@inquantity,@inprice,@indiscount,@inmayang,@inshiyang,@date,@operatorid,@istuihuo)
SET IDENTITY_INSERT incaserecords OFF
insert into incaserecords (incaseno,merchandisesid,...)
values (@in_no,@merchandiseid,...)明确写出要填写的字段的名称,而incaserecordno留空,让它自动生成。