------去标识 ++++网上的方法
alter table tablename add id1 int
update tablename set id1=id
alter table tablename drop column id
exec sp_rename 'tablename.id1','id'
或
select cast (id as int) id,列..... into #temp from 表
drop table 表
select * into 表 from #temp
drop table #temp=========================================================
该方法会改变原有的数据结构。
就不能用sql语句实现类似于‘企业管理器’直接编辑‘标识’为‘否’的功能嘛?
alter table tablename add id1 int
update tablename set id1=id
alter table tablename drop column id
exec sp_rename 'tablename.id1','id'
或
select cast (id as int) id,列..... into #temp from 表
drop table 表
select * into 表 from #temp
drop table #temp=========================================================
该方法会改变原有的数据结构。
就不能用sql语句实现类似于‘企业管理器’直接编辑‘标识’为‘否’的功能嘛?
2、SET IDENTITY_INSERT 允许将显式值插入表的标识列中。
就不能用sql语句实现类似于‘企业管理器’直接编辑‘标识’为‘否’的功能嘛?
原理一样,楼主可通过生成脚本查看
在企业管理里改是先创建新表;用数据导入新表;再删除旧表;重命名新表名为旧表
create table Test(ID int identity,Name nvarchar(10))
go
/* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
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
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Test
(
ID int NOT NULL,
Name nvarchar(10) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.Test)
EXEC('INSERT INTO dbo.Tmp_Test (ID, Name)
SELECT ID, Name FROM dbo.Test WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.Test
GO
EXECUTE sp_rename N'dbo.Tmp_Test', N'Test', 'OBJECT'
GO
COMMIT
2的方法我用过,但修改其值时总是失败,无论是on还是off
SET IDENTITY_INSERT table off
错误提示:仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'table_name' 中为标识列指定显式值。
不应该吧,参:
http://blog.csdn.net/happyflystone/archive/2007/11/25/1901966.aspx