Folks,
How to the next value of identity(1,1) before insert?
SELECT IDENT_CURRENT('ExampleTable') + IDENT_INCR('ExampleTable');
--does not work when the table is empty!
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = 'ExampleDatabase')
DROP DATABASE [ExampleDatabase];
GO
CREATE DATABASE [ExampleDatabase];
GO
USE [ExampleDatabase];
GO
IF EXISTS (SELECT NAME FROM SYS.TABLES WHERE NAME = 'ExampleTable')
DROP TABLE dbo.ExampleTable;
GO
CREATE TABLE
dbo.ExampleTable
(
ID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NULL
);
GO
SELECT * FROM dbo.ExampleTable;
GO
--FAILS IN THIS CASE:
SELECT IDENT_CURRENT('ExampleTable') + IDENT_INCR('ExampleTable');
GO
INSERT INTO ExampleTable
VALUES
(
'Bill'
);
GO
SELECT * FROM dbo.ExampleTable;
GO
--WORKS IN THIS CASE:
SELECT IDENT_CURRENT('ExampleTable') + IDENT_INCR('ExampleTable');
GO
INSERT INTO ExampleTable
VALUES
(
'Steve'
);
GO
SELECT * FROM dbo.ExampleTable;
GO
--WORKS IN THIS CASE:
SELECT IDENT_CURRENT('ExampleTable') + IDENT_INCR('ExampleTable');
GO