Avatar billede mick Nybegynder
26. juni 2001 - 14:59 Der er 8 kommentarer og
1 løsning

Autonummer forsvandt!!

Har en database på en MS SQL server. Efter noget vedlikehold på denne server er nogen felter i et par af tabellerne blevet omgjort fra BIGINT/AUTONUMMER til bare at være BIGINT. Det siger sig selv at dette giver problemer.

Så mit spørgsmål : Er det muligt at lave en \"ALTER TABLE\" på en måde, sådan at disse felter får sin autonummer funktion igen, og samtidig starter autonummer fra \"højeste verdi+1\"
Avatar billede erikjacobsen Ekspert
26. juni 2001 - 15:41 #1
Det kan vel give problemer - det gør det i mysql :) Prøv derfor

Lav et nyt felt, som er primary key og autonummer, med et nyt navn.
Opdater derefter med update tabelnavn set nytfelt=gammelfelt
slet den gamle, og omdøb evt.
Avatar billede erikjacobsen Ekspert
26. juni 2001 - 15:45 #2
Nej nej, prøvede lige i Mysql. Så får du jo tal på feltet. Problemet er
at et (i Mysql) felt som er autonummer skal være primary key, og så må
den jo ikke starte med null-værdier, og heller ikke tal... hmm - prøver
lige noget andet
Avatar billede erikjacobsen Ekspert
26. juni 2001 - 15:49 #3
Ok, det var nemmere i Mysql. Først skal den være primary key:

alter table dat change column id id int(11) primary key;

Dernæst skal den være auto_increment:

alter table dat change column id id int(11)  auto_increment;


Om det så virker i MSSql kan du jo fortælle os ....
Avatar billede mick Nybegynder
26. juni 2001 - 17:03 #4
erikjacobsen> Tak for svaret. Jeg kan ikke få

ALTER TABLE test CHANGE COLUMN id INT(11)  AUTO_INCREMENT

til at virke. Jeg får fejlen :

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword \'COLUMN\'.


Men et alternativ er jo, som du siger, at oprette en ny kolonne, og kopiere alle IDer over i denne, og så slette den gamle kolonne. Men da må jeg ændre navnet på den nye kolonne, når jeg har slettet den gamle. Er det muligt?
Avatar billede slash Nybegynder
26. juni 2001 - 19:00 #5
du skal bruge alter colum!

Avatar billede slash Nybegynder
26. juni 2001 - 19:01 #6
altså alter column :-)
Avatar billede erikjacobsen Ekspert
26. juni 2001 - 19:10 #7
Det hedder i hvert fald ikke auto_increment i MsSql. Resten af
ALTER-syntaksen er så åbenbart også anderledes. Jeg ved ingenting
om MsSql, men ville bare prøve at hjælpe dig i den rigtige retning.
Avatar billede mick Nybegynder
26. juni 2001 - 19:13 #8
Nej det er jo forresten rigtigt. Det heder vel \"NOT FOR REPLICATION\". Prøver lige...
Avatar billede torbenkoch Nybegynder
01. juli 2001 - 14:14 #9
AUTO_INCREMENT hedder IDENTITY i SQL Server.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester