Updating identity column
Note that the table has to match pretty-much exactly (indexes, FKs, etc)@t.j when creating the temp table script out the source table including all indexes and constraints.Then change the names of the table and constraints to avoid collisions.
If you want to use a "Generated Always Identity" column as your primary key, then you will have to specify that explicitly.The seed value is the value inserted into an identity column for the very first row loaded into the table.All subsequent rows contain the current identity value plus the increment value where current identity value is the last identity value generated for the table or view.Then run your query: If you make the change manually, you can ask the manager to generate the SQL script for the change (table designer menu, generate change script).For this change it creates a new table and copies the data across, then deletes the original.Updating can be much more efficient then delete insert when many rows are involved. If a /*Define table with same structure but no IDENTITY*/ CREATE TABLE Temp ( ID INT PRIMARY KEY, X VARCHAR(10) ) /*Switch table metadata to new structure*/ ALTER TABLE Test SWITCH TO Temp; /*Do the update*/ UPDATE Temp SET ID = ID 1; /*Switch table metadata back*/ ALTER TABLE Temp SWITCH TO Test; /*ID values have been updated*/ SELECT * FROM Test /*Safety check in case error in preceding step*/ IF NOT EXISTS(SELECT * FROM Temp) DROP TABLE Temp /*Drop obsolete table*/ CREATE SEQUENCE Seq AS INT START WITH 1 INCREMENT BY 1 CREATE TABLE Test2 ( ID INT DEFAULT NEXT VALUE FOR Seq NOT NULL PRIMARY KEY, X VARCHAR(10) ) INSERT INTO Test2(X) SELECT 'Foo' UNION ALL SELECT 'Bar' UNION ALL SELECT 'Baz' UPDATE Test2 SET ID =1 Very slick.
Learn something new every day (BTW I tested this on SQLExpress; despite the SWITCH TO it doesn't use partitioning, apparently).
ID Employee Name Address Phone No Email ID DOB DOJ Designation Department Craeted Date 2 Sabarish Saidapet 9600387983 [email protected] -2012 Ase Software 2013-05-15 .223 10 Karthik Chrompet 9865028330 [email protected] -2008 Software Engineeer Software 2013-05-15 .613 15 Sabarish Saidapet 9600387983 [email protected] -2012 Ase Software 2013-05-15 .003 IF OBJECT_ID (N'dbo.test') IS NOT NULL DROP TABLE CREATE TABLE ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY , Employee Name VARCHAR(50) NOT NULL ) SET IDENTITY_INSERT ON INSERT INTO ( ID , Employee Name ) VALUES (2, 'Sabarish Saidapet'), (10, 'Karthik Chrompet'), (15, 'Sabarish Saidapet') SET IDENTITY_INSERT OFF SET IDENTITY_INSERT ON DECLARE @temp TABLE ( ID INT NOT NULL , Employee Name VARCHAR(50) NOT NULL ) INSERT INTO @temp (Employee Name, ID) SELECT t.
set identity_insert Geo Country on go insert into Geo Country (all columns including IDentity column) select 18, (all columns except IDentity column) from Geo Country where Country ID = 250 -- Delete will only work if no referencing FK's delete Geo Country where Country ID = 250 set identity_insert Geo Country off go You cannot update the Identity Column in SQL Server.
The order in which the rows are updated is not guaranteed.
But there might be times when you would want to change the value of an identity column. I have not come across a way by which you can update the identity column but there sure is a way to insert one.
If the two values are not the same, you should reset the identity value to avoid potential errors or gaps in the sequence of values.