问个自动增量的问题 20feiyangdn]

发布时间:2017-3-23 22:12:06 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"问个自动增量的问题 20feiyangdn]",主要涉及到问个自动增量的问题 20feiyangdn]方面的内容,对于问个自动增量的问题 20feiyangdn]感兴趣的同学可以参考一下。

我做一个表MyTable,里面有自动增量SeqNum定义为IDENTITY  PRIMARY KEY 用Select into的方法,将MyTable复制一份并保存为MyTableBackup 现在删除MyTable,执行如下命令 INSERT INTO MyTable SELECT * FROM MyTableBackup 在ACCESS下,可以执行成功 在MS SQL Server下执行出错,原因是SeqNum是自动增量,只能自动生成,备份还原时,我希望SeqNum不要自动生成,在执行插入一个表项是还是应该自动生成的。 有人能帮帮我吗?

SET IDENTITY_INSERT 允许将显式值插入表的标识列中。 语法 SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }

set identity_insert MyTable on INSERT INTO MyTable  SELECT * FROM MyTableBackup  set identity_insert MyTable off

引用 2 楼 feixianxxx 的回复:SQL codesetidentity_insert MyTableonINSERTINTO MyTableSELECT*FROM MyTableBackupsetidentity_insert MyTableoff 楼主正解

引用 2 楼 feixianxxx 的回复:SQL codesetidentity_insert MyTableonINSERTINTO MyTableSELECT*FROM MyTableBackupsetidentity_insert MyTableoff 楼主正解

现在删除MyTable,执行如下命令  INSERT INTO MyTable SELECT * FROM MyTableBackup  这句话自相矛盾

如果想插入自增列: set identity_insert MyTable on INSERT INTO MyTable (显示输入列名不可或缺) SELECT * FROM MyTableBackup  set identity_insert MyTable off

我说错了,是删除, MyTable的内容 引用 5 楼 htl258 的回复:现在删除MyTable,执行如下命令 INSERT INTO MyTable SELECT * FROM MyTableBackup 这句话自相矛盾

非常感谢各位的帮助,我遇到的问题已经基本解决,但还有一个问题 CREATE TABLE MyTable(SeqNum INT IDENTITY PRIMARY KEY, UserID varchar(16), Operation INT) INSERT INTO MyTable (UserID, Operation) VALUES('user1', 1) INSERT INTO MyTable (UserID, Operation) VALUES('user1', 2) DROP TABLE MyTableBackup SELECT * INTO MyTableBackup FROM MyTable DELETE FROM MyTable SET IDENTITY_INSERT MyTable ON INSERT INTO MyTable SELECT * FROM MyTableBackup  -----这条语句执行失败 SET IDENTITY_INSERT MyTable OFF 将上面的INSERT INTO MyTable SELECT * FROM MyTableBackup改为 INSERT INTO MyTable(SeqNum, UserID, Operation) SELECT * FROM MyTableBackup 执行成功

上面的问题是我试出来的,采用Ado连接MS SQL Server2005,谁能帮忙解释一下 INSERT INTO MyTable SELECT * FROM MyTableBackup INSERT INTO MyTable(SeqNum, UserID, Operation) SELECT * FROM MyTableBackup 这两条SQL语句的差别,在ACCESS和DB2我都测试过没问题 DB2 下IDENTITIY的定义是 generated BY DEFAULT as identity (start with 1 increment by 1) PRIMARY KEY

在使用set identity_insert MyTable on 时 INSERT INTO MyTable (显示输入列名不可或缺) 

同意feixianxxx 引用 2 楼 feixianxxx 的回复:SQL codesetidentity_insert MyTableonINSERTINTO MyTableSELECT*FROM MyTableBackupsetidentity_insert MyTableoff

帮顶

谢谢js_szy的帮助

引用 8 楼 feiyangdn 的回复:非常感谢各位的帮助,我遇到的问题已经基本解决,但还有一个问题 CREATE TABLE MyTable(SeqNum INT IDENTITY PRIMARY KEY, UserID varchar(16), Operation INT) INSERT INTO MyTable (UserID, Operation) VALUES('user1', 1) INSERT INTO MyTable (UserID, Operation) VALUES('user1', 2) DROP TABLE MyTableBackup SELECT * INTO MyTableBackup FROM MyTable DELETE FROM MyTable SET IDENTITY_INSERT MyTable ON INSERT INTO MyTable SELECT * FROM MyTableBackup  -----这条语句执行失败 SET IDENTITY_INSERT MyTable OFF 将上面的INSERT INTO MyTable SELECT * FROM MyTableBackup改为 INSERT INTO MyTable(SeqNum, UserID, Operation) SELECT * FROM MyTableBackup 执行成功 这个是语法规定的

楼主  sqlserver  不怎么样阿  楼上的答案很多阿

上一篇:触发器问题sql2000(寻高手指教) 20分,无满意结帖,结帖人zlzryjhsz]
下一篇:问个SQL语句执行失败的原因 10feiyangdn]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款