Solved

Auto number

Posted on 2010-11-20
10
715 Views
Last Modified: 2012-05-10
i have alreday have field called ID(unique data is included), i need to make that as auto number and Primary Key.
i try to use some codes but now work. see below
alter table Emp Alter ID1 int identity(1000, 1);
and i try below code also
ALTER TABLE [Emp] ALTER COLUMN [ID] int identity(1000, 1))
showing error called
Incorrect syntax near the keyword 'identity'.


But its showing error can any one help me to solve above issue.thx
0
Comment
Question by:lankapala
10 Comments
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 34179427
You can't alter a column and add identity property for that column.
Instead you can drop the existing column and create new column named ID with Identity property

alter table Emp Drop column ID;
ALTER TABLE [Emp] ADD [ID] int identity(1000, 1)

If you have data loaded into your Emp table, then create a new column named ID_new and then rename it to ID once ID values are autogenerated.
0
 

Author Comment

by:lankapala
ID: 34179428
After that i try below code
ALTER TABLE [EMP] ALTER COLUMN [ID] INT NOT NULL;
ALTER TABLE [EMP] ADD PRIMARY KEY (ID);
Above code is worked properly

this below code is not working
SET IDENTITY_INSERT [Main] ON

i need to make ID cloumn as a Auto number .(i need to keep previous numbers) and when entering data need to create auto number from last previoud number for example last number is showing in Previous numbers 2301, then i need to start auto number 2302.thx
0
 

Author Comment

by:lankapala
ID: 34179435
rrjegan17: i need to keep previous numbers. is it possible to create new auto number after that possible to insert previous numbers to new auto number fields.thx
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 34179485
If you want to start it from 2301 then this would do:

DBCC CHECKIDENT ("EMP", RESEED, 2301);
0
 

Author Comment

by:lankapala
ID: 34179540
its showing Error called 'EMP' does not contain an identity column.
0
 
LVL 11

Expert Comment

by:SAMIR BHOGAYTA
ID: 34179545
don't write this query

ALTER TABLE [Emp] ALTER COLUMN [ID] int identity(1000, 1))

Write this query

ALTER TABLE Emp
ALTER COLUMN ID
ADD CONSTRAINT IDENTITY(1000,1)
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 34179664
Have you created Identity column on EMP table using the statements given earlier.
0
 

Author Comment

by:lankapala
ID: 34180254
showing error
samirbhogayta
Incorrect syntax near the keyword 'CONSTRAINT'.
0
 
LVL 7

Accepted Solution

by:
rmm2001 earned 500 total points
ID: 34180379
Go with what @rrjegan17 was saying with DBCC CHECKIDENT ("EMP", RESEED, 2301) if you want your keys to start at 2301 after you run this script.

Easiest way to do this though is going to be to recreate the table of sorts to maintain what you already have. Put the current rows that you have into a temp table with the identity (1000, 1) like you wanted, but with identity_insert on so that you can keep the ids already there. Then truncate out your original table. Then modify your ID column. Then identity_insert back into the original table with the new constraints. Remember to always backup your tables before you change any constraints like this in case something goes awol.
CREATE #Table1 ( ID INT IDENTITY (1000, 1), Field1 VARCHAR(50), Field2 VARCHAR(50) )

SET IDENTITY_INSERT #Table1 ON
INSERT #Table1
SELECT ID, Field1, Field2 FROM <YourTable>
SET IDENTITY_INSERT #Table1 OFF

TRUNCATE TABLE <YourTable>

ALTER TABLE <YourTable> DROP COLUMN ID
ALTER TABLE <YourTable> ADD ID INT IDENTITY(1000, 1)

SET IDENTITY_INSERT <YourTable> ON
INSERT <YourTable> (ID, Field1, Field2)
SELECT ID, Field1, Field2
FROM #Table1
SET IDENTITY_INSERT <YourTable> OFF

DROP #Table1

Open in new window

0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 34288403
lankapala,

Splitting points with my comments at least as Assisted solution should have been fair..
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Naughty Me. While I was changing the database name from DB1 to DB_PROD1 (yep it's not real database name ^v^), I changed the database name and notified my application fellows that I did it. They turn on the application, and everything is working. A …
Hi all, It is important and often overlooked to understand “Database properties”. Often we see questions about "log files" or "where is the database" and one of the easiest ways to get general information about your database is to use “Database p…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

792 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question