SET IDENTITY_INSERT 允许将显式值插入表的标识列中。语法 SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }参数 database是指定的表所驻留的数据库名称。owner是表所有者的名称。table是含有标识列的表名。注释 任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft® SQL Server™ 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。权限 执行权限默认授予 sysadmin 固定服务器角色和 db_owner 及 db_ddladmin 固定数据库角色以及对象所有者。示例 下例创建一个含有标识列的表,并显示如何使用 SET IDENTITY_INSERT 设置填充由 DELETE 语句导致的标识值中的空隙。-- Create products table. CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40)) GO -- Inserting values into products table. INSERT INTO products (product) VALUES ('screwdriver') INSERT INTO products (product) VALUES ('hammer') INSERT INTO products (product) VALUES ('saw') INSERT INTO products (product) VALUES ('shovel') GO-- Create a gap in the identity values. DELETE products WHERE product = 'saw' GOSELECT * FROM products GO-- Attempt to insert an explicit ID value of 3; -- should return a warning. INSERT INTO products (id, product) VALUES(3, 'garden shovel') GO -- SET IDENTITY_INSERT to ON. SET IDENTITY_INSERT products ON GO-- Attempt to insert an explicit ID value of 3 INSERT INTO products (id, product) VALUES(3, 'garden shovel'). GOSELECT * FROM products GO -- Drop products table. DROP TABLE products GO
lg9wowo(lg9wowo) 不可以直接改的,因为identity是自动增长的.其它数据类型可以直接那样该. 你看看下面的代码,我在ENTERPRISE中改的,把代码copy出来了,希望对你有帮助.我首先按你的要求建立表ID1,只有一个字段ID.BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON GO SET TRANSACTION ISOLATION LEVEL SERIALIZABLE GO COMMIT BEGIN TRANSACTION CREATE TABLE dbo.Tmp_ID1 ( ID numeric(18, 0) NOT NULL IDENTITY (1, 1)
) ON [PRIMARY] GO SET IDENTITY_INSERT dbo.Tmp_ID1 ON GO IF EXISTS(SELECT * FROM dbo.ID1) EXEC('INSERT INTO dbo.Tmp_ID1(ID) SELECT CONVERT(numeric(18, 0), ID) FROM dbo.ID1 TABLOCKX') GO SET IDENTITY_INSERT dbo.Tmp_ID1 OFF GO DROP TABLE dbo.ID1 GO EXECUTE sp_rename 'dbo.Tmp_ID1', 'ID1' GO COMMIT
我是这样修改:
ALTER TABLE 表名 ALTER COLUMN 字段名 numeric(18,0) identity(1,1) not null
但提示“identity”旁有错!!!
对某个表的某一列(该列必须int型)设种子值和增量值,
方法是在企业管理器中右击一个表选设计表,进入设计菜单,选中要改的那列
在下面的面版里点“标识”选‘是’再在下面的‘标识种子’和‘递增量’中
填入相应的值。
允许将显式值插入表的标识列中。语法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }参数
database是指定的表所驻留的数据库名称。owner是表所有者的名称。table是含有标识列的表名。注释
任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft® SQL Server™ 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。权限
执行权限默认授予 sysadmin 固定服务器角色和 db_owner 及 db_ddladmin 固定数据库角色以及对象所有者。示例
下例创建一个含有标识列的表,并显示如何使用 SET IDENTITY_INSERT 设置填充由 DELETE 语句导致的标识值中的空隙。-- Create products table.
CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
GO
-- Inserting values into products table.
INSERT INTO products (product) VALUES ('screwdriver')
INSERT INTO products (product) VALUES ('hammer')
INSERT INTO products (product) VALUES ('saw')
INSERT INTO products (product) VALUES ('shovel')
GO-- Create a gap in the identity values.
DELETE products
WHERE product = 'saw'
GOSELECT *
FROM products
GO-- Attempt to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO products (id, product) VALUES(3, 'garden shovel')
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT products ON
GO-- Attempt to insert an explicit ID value of 3
INSERT INTO products (id, product) VALUES(3, 'garden shovel').
GOSELECT *
FROM products
GO
-- Drop products table.
DROP TABLE products
GO
不可以直接改的,因为identity是自动增长的.其它数据类型可以直接那样该.
你看看下面的代码,我在ENTERPRISE中改的,把代码copy出来了,希望对你有帮助.我首先按你的要求建立表ID1,只有一个字段ID.BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_ID1
(
ID numeric(18, 0) NOT NULL IDENTITY (1, 1)
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_ID1 ON
GO
IF EXISTS(SELECT * FROM dbo.ID1)
EXEC('INSERT INTO dbo.Tmp_ID1(ID)
SELECT CONVERT(numeric(18, 0), ID) FROM dbo.ID1 TABLOCKX')
GO
SET IDENTITY_INSERT dbo.Tmp_ID1 OFF
GO
DROP TABLE dbo.ID1
GO
EXECUTE sp_rename 'dbo.Tmp_ID1', 'ID1'
GO
COMMIT