首页 > Linux操作系统 > Linux操作系统 > Identity的相关用法
Seed:加载到表中的第一个行所使用的值
Increment:与前一个加载行的标识的增量值
如果以上两个都没有指定,那么默认是(1,1)
语法:SET IDENTITY_INSERT [database.[ owner.]] {table } { ON |OFF }
database:指定的表所驻留的数据库名称。
Owner:表所有者的名称。
Table:含有标识列的表名。
3、DBCC CHECKIDENT 语法
DBCC CHECKIDENT ( table_name [ , { NORESEED | {
RESEED [ , new_reseed_value ] } } ] ) [ WITH NO_INFOMSGS ]
table_name
:是要对其当前标识值进行检查的表名。指定的表必须包含标识列。表名必须符合标识符规则。
NORESEED :指定不应更改当前标识值。
RESEED :指定应该更改当前标识值。
new_reseed_value :用作标识列的当前值的新值。
WITH NO_INFOMSGS :取消显示所有信息性消息。
Create table student(id int not null identity
Name char(20) not null);
INSERT INTO STUDENT(ID,NAME) VALUES(1,'HAPPYSU')
消息 544,级别 16,状态 1,第 1 行
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'student' 中的标识列插入显式值。
解决方法一:(允许标识列插入)
SET IDENTITY_INSERT TEST_SQL.DBO.STUDENT ON;
具体语法查看上面介绍。再次插入数据验证OK.
解决方法二:(指定列插入)
Insert into student(name) values(‘journeysu’);
插入数据OK
3、在identity列删除数据再插入时,造成数据不连续性。
比如我删除了id=5的数据,如果没有在SET IDENTITY_INSERT TEST_SQL.DBO.STUDENT ON及没有指定id这一列插入再次插入一条数据的时候,数据库是会自动标识id=6的。
如果在这个时候需要强制id从5开始的话,那么重置种子的值,可以设置如下:
dbcc checkident(student,reseed,4)
语法详见上文。
1、 Identity在插入数据时,先看看有没有指定列名插入、identity_insert有没有打开(一个数据库只能打开一个)。
2、 identity是标识列不是序号列,如果想给表指定一个连续不断的序号列的时候,请慎重选择identity,因为identity是唯一标识列,在删除数据的时候会造成序号不连续,需要你重置种子数才能避免数据序号的不连续性。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28477322/viewspace-759470/ ,如需转载,请注明出处,否则将追究法律责任。