我只是需要用于测试,测试完成后需要撤销。
我看过一些在线教程,介绍如何重新填充表格,但没有太多关于如何撤销的内容。
假设表格定义如下:
create table beer
(
beer_id numeric(10) not null,
mnemonic nvarchar(8)
);
go
假设我想让新的标识暂时从12345
开始,并在最后删除新行并将下一个标识设置为原来应该的值。
我只是需要用于测试,测试完成后需要撤销。
我看过一些在线教程,介绍如何重新填充表格,但没有太多关于如何撤销的内容。
假设表格定义如下:
create table beer
(
beer_id numeric(10) not null,
mnemonic nvarchar(8)
);
go
假设我想让新的标识暂时从12345
开始,并在最后删除新行并将下一个标识设置为原来应该的值。
重置身份属性的命令是:
DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)
当您想将列的标识设置为12345时,请运行此命令
DBCC CHECKIDENT (beer, RESEED, 12345)
当您想要删除测试行并将值恢复为先前的值时,可以执行以下操作。
DELETE
FROM beer
WHERE beer_id >= 12345 ;
DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;
DBCC CHECKIDENT (beer, RESEED, @NewSeed)
下面是您情景的演示。请注意,beer_id列是使用IDENTITY (1, 1)
属性创建的,它将标识种子设置为1,并以1递增。
CREATE TABLE beer
(
beer_id NUMERIC(10) IDENTITY (1,1) NOT NULL,
mnemonic NVARCHAR(8)
);
GO
INSERT INTO beer(mnemonic) VALUES ('Beer 1')
INSERT INTO beer(mnemonic) VALUES ('Beer 2')
SELECT *
FROM beer ;
DBCC CHECKIDENT (beer, RESEED, 12345)
GO
INSERT INTO beer(mnemonic) VALUES ('Beer 3')
INSERT INTO beer(mnemonic) VALUES ('Beer 4')
SELECT *
FROM beer ;
DELETE
FROM beer
WHERE beer_id >= 12345 ;
DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;
DBCC CHECKIDENT (beer, RESEED, @NewSeed)
GO
INSERT INTO beer(mnemonic) VALUES ('Beer 5')
INSERT INTO beer(mnemonic) VALUES ('Beer 6')
SELECT *
FROM beer ;
Schema.TableName 应该用单引号括起来。
DECLARE @SeedValue INT
SET @SeedValue = (SELECT MAX(ColumnName) FROM Schema.TableName)
DBCC CHECKIDENT ('Schema.TableName',RESEED,@SeedValue)
SELECT IDENT_CURRENT('table_name')
。 - iheartcsharp