文章主要描述的是SQL Server数据库中使用率比较高的identity列,我们大家都知道在SQL Server数据库中,经常会对Identity标识列进行使用,在实际操作中这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。比如:SET IDENTITY_INSERT为OFF时不能将显式值插入表的标识列中异常问题
允许将显式值插入表的标识列中,当设置为ON时,这时可能在INSERT操作时手工指定插入到标识列中的编号,同时必须在操作完成后,将IDENTITY_INSERT还原成OFF,否则下次插入的时候必须指定编号,那不然就无法完成INSERT操作。
不需要自动增长的解决方法:
SET IDENTITY_Insert [TableName] ON
在查询分析器里面这样写:
SET IDENTITY_Insert member ON
insert member(id,username) values(1,'admin')
SET IDENTITY_Insert member OFF
在ASP页面可以这样写:
con.execute("SET IDENTITY_Insert member ON" & vbcrlf & "insert member(id,username) values(2,'abcde')" & vbcrlf & "SET IDENTITY_Insert member OFF")
使用该方法应该保证标识列没有插入重复数据,要不然会返回错误,插入操作不会进行。SET IDENTITY_Insert [TableName] OFF 其实可以省略,因为会话完毕后,这个开关就自动关上了。
注:member为表名