RJ.*_*RJ. -1 sql sql-server identity-column
这不起作用:
DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, 0)
Run Code Online (Sandbox Code Playgroud)
插入下一条记录后,我希望种子为0而不是1.
我试过这个,但功能不喜欢它:
DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, -1)
DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, '-1')
Run Code Online (Sandbox Code Playgroud)
如何重置表的种子,以便下一个记录是零?(0)?
如果IDENTITY列定义为(0,1),并且表为空,并且没有涉及外键,则只发出:
TRUNCATE TABLE dbo.ImportedFiles;
Run Code Online (Sandbox Code Playgroud)
如果表具有外键 - 或者在任何情况下,就此而言 - 您可以覆盖该值:
SET IDENTITY_INSERT dbo.ImportedFiles ON;
INSERT dbo.ImportedFiles(col1, col2) SELECT 0, 'UNKNOWN';
SET IDENTITY_INSERT dbo.ImportedFiles OFF;
Run Code Online (Sandbox Code Playgroud)
我已经确认@ Avarkx的答案也有效 - 用-1重新设定应该产生0的下一个插入.所以我不确定你使用的是哪个版本不起作用(我不知道如何解释"不不喜欢它).
我无法复制这个...这是一个有效的测试,Sql Server 2012R2.2008 R2.
另外,@ Anybody说0意味着什么,它确实没有.虽然看到0值被用作未知数等是相当普遍的,但围绕IDENTITY列构建的业务逻辑是一种反模式,通常应该避免,绝对不会推荐.
CREATE TABLE dbo.Foo
(
Foo_PK BIGINT IDENTITY( 1, 1 ) NOT NULL,
Bar BIT
);
INSERT INTO dbo.Foo (Bar)
SELECT b.Bar
FROM
(SELECT Bar = NULL
UNION ALL
SELECT Bar = 1
UNION ALL
SELECT Bar = 0) b;
SELECT *
FROM dbo.Foo;
DBCC CHECKIDENT ('dbo.Foo', RESEED, -1);
INSERT INTO dbo.Foo (Bar)
SELECT b.Bar
FROM
(SELECT Bar = NULL
UNION ALL
SELECT Bar = 1
UNION ALL
SELECT Bar = 0) b;
SELECT *
FROM dbo.Foo;
GO
DROP TABLE dbo.Foo;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
478 次 |
最近记录: |