今天有人问到MSSQL表里的IDENTITY字段,如何让它在复制原来数据到该表时,原来数据的IDENTITY字段不变,而新插入数据时,新插入的数据的IDENTITY依然增长,查了些资料,做了个实验,最终解决,实验过程脚本如下: use test1 go drop table t1 drop table t2 go create table t1(col1 int identity(100,1),col2 char(100)) create table t2(col1 int identity(1,1) not for replication,col2 char(100)) go insert into t1 values('aaaaa') insert into t1 values('bbbbbb') insert into t1 values('cccccc') go set identity_insert t2 on insert into t2(col1) select col1 from t1 go DBCC CHECKIDENT(t2,RESEED,1) go insert into t2('eeeeee') insert into t2('rrrrrr') go select * from t2 go 晚上回家后,发现他针对该问题又提出了疑问,于是就决定对MSSQL的企业管理器中进行该操作进行了跟踪,主要是t-sql和procedure,结果发现和昨晚几乎差不多: CREATE TABLE dbo.Tmp_Table_1 ( c1 int NOT NULL IDENTITY (50, 1000), c2 char(10) NULL ) ON [PRIMARY] SET IDENTITY_INSERT dbo.Tmp_Table_1 ON IF EXISTS(SELECT * FROM dbo.Table_1) EXEC('INSERT INTO dbo.Tmp_Table_1 (c1, c2) SELECT c1, c2 FROM dbo.Table_1 WITH (HOLDLOCK TABLOCKX)') SET IDENTITY_INSERT dbo.Tmp_Table_1 OFF DROP TABLE dbo.Table_1 EXECUTE sp_rename N'dbo.Tmp_Table_1', N'Table_1', 'OBJECT' 最后,他又提出了如果原表有约束和二进制数据的问题,那也只能是一步步实现了,比较麻烦,但MSSQL的EM的思路肯定是这么实现的。
通过MSSQL嗅探器跟踪研究EM内部行为并解决identify列问题
来源:这里教程网
时间:2026-03-02 11:03:16
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- SQL Server 2008性能故障排查(二)——CPU
SQL Server 2008性能故障排查(二)——CPU
26-03-02 - 使用 FOR XML PATH 、CTE、PIVOT 產生動態欄位統計表
使用 FOR XML PATH 、CTE、PIVOT 產生動態欄位統計表
26-03-02 - 电脑常用软件下载合集,对不会下载垃圾软件说拜拜
电脑常用软件下载合集,对不会下载垃圾软件说拜拜
26-03-02 - 大学生入学电脑什么样的配置比较适合?
大学生入学电脑什么样的配置比较适合?
26-03-02 - 熟悉这些电脑显示器接口,在购买显示器的时候不至于买错了
熟悉这些电脑显示器接口,在购买显示器的时候不至于买错了
26-03-02 - Ubuntu lsof命令详解(手把手教你列出打开文件)
Ubuntu lsof命令详解(手把手教你列出打开文件)
26-03-02 - 如何处理淘汰了的旧电脑的数据更安全?
如何处理淘汰了的旧电脑的数据更安全?
26-03-02 - 电脑组装 组装电脑中的重要动作,如何选择合适的CPU?
电脑组装 组装电脑中的重要动作,如何选择合适的CPU?
26-03-02 - 学生在家里上网课,购买什么样的电脑设备比较适合?
学生在家里上网课,购买什么样的电脑设备比较适合?
26-03-02 - 恶劣环境中如何延长服务器的使用寿命?做到物尽其用
恶劣环境中如何延长服务器的使用寿命?做到物尽其用
26-03-02
