--在SQL SERVER的Enterprise Manage中,先建一个表 --然后右击,选择Design Table,添加了Identity属性后,用Save Change Script按钮 --看看系统是怎么做的,去掉Identity同理. --假如建了表a,id有identity属性 ------------------------------------------------ --1.创建表 ifexists (select*from dbo.sysobjects where id =object_id(N'[dbo].[a]') andOBJECTPROPERTY(id, N'IsUserTable') =1) droptable[dbo].[a] GO CREATETABLE[dbo].[a] ( [id][int]NOTNULL , [title][char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON[PRIMARY] GO --2.加identity属性 BEGINTRANSACTION SET QUOTED_IDENTIFIER ON SETTRANSACTIONISOLATIONLEVELSERIALIZABLE SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGINTRANSACTION CREATETABLE dbo.Tmp_a ( id intNOTNULLIDENTITY (1, 1), title char(10) NULL ) ON[PRIMARY] GO SETIDENTITY_INSERT dbo.Tmp_a ON GO IFEXISTS(SELECT*FROM dbo.a) EXEC('INSERT INTO dbo.Tmp_a (id, title) SELECT id, title FROM dbo.a TABLOCKX') GO SETIDENTITY_INSERT dbo.Tmp_a OFF GO DROPTABLE dbo.a GO EXECUTE sp_rename N'dbo.Tmp_a', N'a', 'OBJECT' GO ALTERTABLE dbo.a ADDCONSTRAINT PK_a PRIMARYKEYCLUSTERED ( id ) ON[PRIMARY] GO COMMIT --3.去掉identity属性 BEGINTRANSACTION SET QUOTED_IDENTIFIER ON SETTRANSACTIONISOLATIONLEVELSERIALIZABLE SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGINTRANSACTION CREATETABLE dbo.Tmp_a ( id intNOTNULL, title char(10) NULL ) ON[PRIMARY] GO IFEXISTS(SELECT*FROM dbo.a) EXEC('INSERT INTO dbo.Tmp_a (id, title) SELECT id, title FROM dbo.a TABLOCKX') GO DROPTABLE dbo.a GO EXECUTE sp_rename N'dbo.Tmp_a', N'a', 'OBJECT' GO ALTERTABLE dbo.a ADDCONSTRAINT PK_a PRIMARYKEYCLUSTERED ( id ) ON[PRIMARY] GO COMMIT