Reputation: 609
I am trying to create an IF
statement or maybe even a case but I can't seem to get the syntax right.
I have this:
DECLARE @var INT
SELECT @var = MAX(LeadAddressid)
FROM dbo.STG_LEAD_ADDRESS_BASE
WHERE LeadAddressid BETWEEN 600000000 AND 800000000
SET @var = @var + 1
DBCC CHECKIDENT ('STG_LEAD_ADDRESS_BASE',RESEED, @var);
The condition I am trying to put is if the table is empty or no rows are returned I want the following code
DBCC CHECKIDENT ('STG_LEAD_ADDRESS_BASE',RESEED, 600000000);
If there is a value in the table between 600000000 AND 80000000
Then I want the following:
DBCC CHECKIDENT ('STG_LEAD_ADDRESS_BASE', RESEED, @var);
Can someone please advise how to do this in SQL Server? I have never used the IF
statement in T-SQL - I am guessing that would be required?
Upvotes: 0
Views: 369
Reputation: 1581
Try this. Hope it helps
IF EXISTS (
SELECT TOP 1 *
FROM dbo.STG_LEAD_ADDRESS_BASE
WHERE LeadAddressid BETWEEN 600000000
AND 800000000
)
BEGIN
DECLARE @var BIGINT
SELECT @var = MAX(LeadAddressid)
FROM dbo.STG_LEAD_ADDRESS_BASE
WHERE LeadAddressid BETWEEN 600000000
AND 800000000
--SET @var = @var + 1
DBCC CHECKIDENT (
'STG_LEAD_ADDRESS_BASE',
RESEED,
@var
);
END
ELSE
BEGIN
DBCC CHECKIDENT (
'STG_LEAD_ADDRESS_BASE',
RESEED,
600000000
);
END
Create Test Table
IF OBJECT_ID('Test_Table')IS NOT NULL
DROP TABLE Test_Table
GO
CREATE TABLE Test_Table (LeadAddressid INT IDENTITY(1, 1),SomeColumn VARCHAR(10))
GO
Insert Script
IF EXISTS (
SELECT TOP 1 *
FROM dbo.Test_Table
WHERE LeadAddressid BETWEEN 600000000
AND 800000000
)
BEGIN
DECLARE @var BIGINT
SELECT @var = MAX(LeadAddressid)
FROM dbo.Test_Table
WHERE LeadAddressid BETWEEN 600000000
AND 800000000
SET @var = @var
DBCC CHECKIDENT (
'Test_Table',
RESEED,
@var
);
END
ELSE
BEGIN
DBCC CHECKIDENT (
'Test_Table',
RESEED,
600000010
);
END
INSERT INTO Test_Table
SELECT 'a'
SELECT * FROM Test_Table
First Run will Reseed the tables Identity to 600000000, Second run will reseed to 600000000 and the following insert will be 600000001, however if you were to inclement the variable, you would notice that the sequence would be 600000002 instead of 600000001. hope it helps.
Upvotes: 1