转换程序的一些问题:设置为 OFF 时,不能为表 ‘Test’ 中的标识列插入显式值。8cad0260

2008/01 04 18:01

因为先前的转换程序备份都没了:( 现在又重新开始学2005,所以借此准备再次写一个转换程序(针对asp.net forums)

考虑到一个问题,先前我都是靠内部存储过程进行注册、发帖、建立版面的,可这次我是想在此基础上,能变成能转换任何论坛的,因此不想借助他自带的存储过程。

先前有一点很难做,因为一般的主键都是自动递增的,在自动递增的时候是不允许插入值的,这点让我一只很烦,今天有时间,特地建立了一个表来进行测试

字段名 备注
ID 设为主键 自动递增
Name 字符型

建立以后,我先随便输入了一些数据(当中输入的时候,ID是不允许输入的,但会自动递增)

随后我运行一条Sql语句:

insert into [Test] (id,name) values (4,'asdf');

很明显,抛出一个Sql错误:
消息 544,级别 16,状态 1,第 1 行
当  设置为 OFF 时,不能为表 'Test' 中的标识列插入显式值。    

网上查找了一下,可以利用Set IDENTITY_INSERT On来解决这个问题。

至此,我只要在转换插入数据的时候,利用一个事务进行插入工作

Set IDENTITY_INSERT [TableName] On;
Tran
Insert Into.

Set IDENTITY_INSERT [TableName] Off;

ok,成功插入数据,目的达到。
写这文章不是为了什么,就为了自己能记住,让自己以后能熟练运用。

PS1:今天公司上午网站出现问题,造成了很严重的后果,我很坚信我的同事不会犯connection.close()的错误,错误原因还没有查到,星期一准备接受全体惩罚
PS2:年会要到了,要我表演节目,晕死,还演很抽象的人物,诶,看来以后在公司是没法见人了

--转载请注明: http://www.jamesying.com/2008/01/04/%e8%bd%ac%e6%8d%a2%e7%a8%8b%e5%ba%8f%e7%9a%84%e4%b8%80%e4%ba%9b%e9%97%ae%e9%a2%98%ef%bc%9a%e8%ae%be%e7%bd%ae%e4%b8%baoff%e6%97%b6%ef%bc%8c%e4%b8%8d%e8%83%bd%e4%b8%ba%e8%a1%a8%27test%27%e4%b8%ad%e7/

发表回复

欢迎回来 (打开)

(必填)