sql server 2005 主键自动编号

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:28:41
create table 考试成绩表
(
编号 int identity(2001,1) not null ,
准考证号 int not null,
考试科目 char(10),
考试成绩 int not null,
constraint pk_bh primary key(编号),
constraint fk_zh foreign key (准考证号) references 考生信息(准考证号),
constraint ck_kk check(考试科目 in('语文','数学','英语')),
constraint ck_kc check(考试成绩 between 0 and 150)
)
set identity_insert 考试成绩 on
insert into 考试成绩表
values('',1001,'语文',80)
系统出现:消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'考试成绩表'中的标识列指定显式值。 该怎么解决

set identity_insert 考试成绩表 on

insert into 考试成绩表 (编号,准考证号,考试科目,考试成绩)
values('',1001,'语文',80)

任何时候,一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,则对另一个表发出 SET IDENTITY_INSERT ON 语句时,SQL Server 2005 将返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON,并报告已将其属性设置为 ON 的表。

如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。

SET IDENTITY_INSERT 的设置是在执行或运行时设置的,而不是在分析时设置的。