[ CallMeSaMaster @ 14.01.2010. 15:14 ] @
Pozdrav,

imam jednu tabelu koja sadrzi neke podatke , izmedju ostalog polje "ID" ali koje nije setovano kao Identity i autoincrement. Neko ko je dizajnirao bazu napravio je tu gresku da u toj tabeli ima ID ali da to polje nije autoincrement jer je on iz applikacije generisao ID i pisao u bazu, sto po meni nema neke logike.

Sada bih ja htio da to promijenim i da se SQL server brine o dodijeljivanju ID u tabeli. Problem mi predstavlja sto trebam sve podatke zadrzati, ukljucujuci i ID-eve koji su u toj tabeli ,ali postaviti da u buduce to polje bude identity i autoincrement 1 od zadnjeg postojeceg ID-a.. Naravno trebam scriptu za to jer ne zelim to direktno rucno na tabeli da klikam i na taj nacin da setujem.

Lagano sam dobio zadnji ID u tabeli, funkcijom MAX. Ali ne znam kako da sada alter tu tabelu odnosno to polje i da baza nastavi normalno da radi.

Moze li mi neko pomoci kako to da uradim?

Ako se malo razumijem u baze, a mislim da se razumijem, trebao bih napraviti novu temptabelu, setovat polje sa identity koje zelim, rename tabele u stari naziv, a staru tabelu obrisat. Problem mi je naravno sto dosadasnje id moram zadrzati, znaci ne smijem ih obrisati.

Nadam se da sam uspio objasniti...
[ MarkoBalkan @ 14.01.2010. 18:20 ] @
kod kreiranja identity (autoincrement) imaš mogućnost od kojeg broja da počne i skojim pomakom.

identity(100,1)

počinje od 100 sa korakom 1.

http://technet.microsoft.com/en-us/library/ms174123.aspx

odma na početku

Code:
ALTER TABLE table_name
    ALTER COLUMN column_name 
   {
    type_name[({precision[.scale]})][NULL|NOT NULL]
   {DROP DEFAULT 
   | SET DEFAULT constant_expression 
   | IDENTITY [ ( seed , increment ) 
   } 


ALTER TABLE MyCustomers ALTER COLUMN CustId IDENTITY (100, 1);