Wednesday 19 November 2014

Update identity column in SQL Server

USE [sales]
GO

/****** Object:  Table [dbo].[Table_1]    Script Date: 11/19/2014 17:36:49 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Table_1]') AND type in (N'U'))
DROP TABLE [dbo].[Table_1]
GO

USE [sales]
GO

/****** Object:  Table [dbo].[Table_1]    Script Date: 11/19/2014 17:36:49 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Table_1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [txt] [nvarchar](50) NULL
) ON [PRIMARY]

GO
insert into table_1 values('a')
insert into table_1 values('b')
insert into table_1 values('c')
insert into table_1 values('d')
insert into table_1 values('e')
insert into table_1 values('f')
insert into table_1 values('g')
insert into table_1 values('h')
GO
-------------------------------------------------------------------------------------------------------------------
SET IDENTITY_INSERT dbo.table_1 ON
go
UPDATE dbo.table_1
 SET ID=0
 WHERE ID=1;
go
SET IDENTITY_INSERT dbo.table_1 OFF
go
--------------------------------------------------------------------------------------------------------------
--This attempt to update identity column ID fails.
--------------------------------------------------------------------------------------------------------------
Alternative:
USE [sales]
GO

/****** Object:  Table [dbo].[Table_2]    Script Date: 11/19/2014 17:36:49 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Table_2]') AND type in (N'U'))
DROP TABLE [dbo].[Table_2]
GO

USE [sales]
GO

/****** Object:  Table [dbo].[Table_2]    Script Date: 11/19/2014 17:36:49 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Table_2](
    [id] [int] NOT NULL,
    [txt] [nvarchar](50) NULL
) ON [PRIMARY]

GO
-----------------------------------------------------------------------------------------------------------
--The following statements will update the identity column in --table_1
-----------------------------------------------------------------------------------------------------------
ALTER TABLE table_1 SWITCH TO table_2;

UPDATE dbo.table_2
 SET ID=0
 WHERE ID=1;

ALTER TABLE table_2 SWITCH TO table_1;

No comments:

Post a Comment