Avatar billede ultik Nybegynder
24. december 2000 - 00:43 Der er 32 kommentarer og
1 løsning

ALTER autonummer SQL

Hej !
jeg har en database der er blevet konverteret fra access til SQL server. Problemet er at de har lavet kuk i den da den blev konverteret, og mine autonumber felter er nu bare integers den ikke selv indsætter !

hvordan kan jeg igennem en Alter SQL sætning afhjælpe dette ?

Hjælp er MEGET tiltrængt, og MEGET hurtigt helst, inden jul hvis i forstår mig

Med venlig hilsen og på forhånd tak
Ulrik Jensen
ulrik@qcom.dk
Avatar billede lp Nybegynder
24. december 2000 - 01:22 #1
denne skulle hjælpe dig:

ALTER TABLE <tabelnavn> CHANGE  <feltnavn> <feltnavn> INT (10) DEFAULT \'0\'  not null AUTO_INCREMENT

husk at feltet skal være primær eller en unik key inden du gør dette og det kan gøre med følgende sql:

ALTER TABLE <tabelnavn> DROP PRIMARY KEY, ADD PRIMARY KEY(<feltnavn>)

husk at køre den sidste først........< og > skal ikke være der, blot for at markere dine felt og tabelnavne........

så er den kørende......
Avatar billede lp Nybegynder
24. december 2000 - 01:24 #2
i den første sql står der int (10) som betyder at felttypen er INT (som et talfelt hedder i MySQL, det hedder den vist også i MS SQL........som du ikke skriver noget om hvad du har, men det ser ud til at det er en SQL server........det skulle virke alligevel......tallet i parentes er størrelsen på talfeltet......
Avatar billede ultik Nybegynder
24. december 2000 - 02:02 #3
det er SQL server, som der også står :-) tak for hjælpen jeg skal hurtigt lige tjekke om det funger, 10, er det 10 cifre eller hvaD ?
Avatar billede lp Nybegynder
24. december 2000 - 02:05 #4
yepper...det er det nemlig, husk fremgangsmåden :-)
Avatar billede ultik Nybegynder
24. december 2000 - 02:07 #5
k
Avatar billede lp Nybegynder
24. december 2000 - 02:09 #6
BTW: Det er ikke nok at sige det er en SQL server. MySQL er en SQL server....Oracle og Sybase er en SQL server........Du skal skrive MS SQL......så ved jeg (og alle andre) at det er en Microsoft SQL server....:-)
Avatar billede ultik Nybegynder
24. december 2000 - 02:11 #7
er det meningen at der skal stå 2 gange feltnavn i den første imellem change og int ?
Avatar billede ultik Nybegynder
24. december 2000 - 02:11 #8
ok, det ved jeg så nu :-)
Avatar billede lp Nybegynder
24. december 2000 - 02:13 #9
yep, det er meningen........først skriver du hvilket navn, derefter hvad navnet skal ændres til (i dette tilfælde det samme :-)
Avatar billede lp Nybegynder
24. december 2000 - 02:13 #10
virkede det ?
Avatar billede ultik Nybegynder
24. december 2000 - 02:14 #11
ok, prøver at køre det nu
Avatar billede lp Nybegynder
24. december 2000 - 02:15 #12
nå ok, du har bare accepteret mit svar, he he :-)
Avatar billede ultik Nybegynder
24. december 2000 - 02:16 #13
Microsoft OLE DB Provider for SQL Server error \'80040e14\'

Incorrect syntax near the keyword \'PRIMARY\'.

/chat/admin/alter.asp, line 6

<!--#include file=\"../inc/db.asp\"-->
<%
OpenDb
  sqlPrimKey = \"ALTER TABLE [nickpics] DROP PRIMARY KEY, ADD PRIMARY KEY([id])\"
  sqlAutoNr = \"ALTER TABLE [nickpics] CHANGE  [id] [id] INT (10) DEFAULT \'0\'  not null AUTO_INCREMENT\"
  connDb.Execute(sqlPrimKey)
  connDb.Execute(sqlAutoNr)
LukDb
%>
Avatar billede ultik Nybegynder
24. december 2000 - 02:18 #14
det går altså galt allerede i den første
Avatar billede lp Nybegynder
24. december 2000 - 02:18 #15
jeg tror ikke det er nødvendigt med dine [ ] omkring, prøv uden......jeg tjekker lige op på noget dokumentation!
Avatar billede ultik Nybegynder
24. december 2000 - 02:18 #16
har prøvet uden, samme fejl
Avatar billede lp Nybegynder
24. december 2000 - 02:20 #17
hmmm, prøv:
sqlPrimKey = \"ALTER TABLE [nickpics] ADD PRIMARY KEY([id])\"
Avatar billede ultik Nybegynder
24. december 2000 - 02:20 #18
altså så jeg deler den op i to ?
Avatar billede ultik Nybegynder
24. december 2000 - 02:21 #19
det virkede !

men så brokkede den sig over den næste :

Microsoft OLE DB Provider for SQL Server error \'80040e14\'

Line 1: Incorrect syntax near \'id\'.

/chat/admin/alter.asp, line 7
Avatar billede lp Nybegynder
24. december 2000 - 02:23 #20
har du prøvet uden [ ] ?
Avatar billede ultik Nybegynder
24. december 2000 - 02:25 #21
samme fejl
Avatar billede lp Nybegynder
24. december 2000 - 02:27 #22
kan du tjekke om den har primary key på det felt nu? jeg går ud fra at du mener at den første virkede da den ikke kom med nogen fejl :-)
Avatar billede ultik Nybegynder
24. december 2000 - 02:29 #23
ja, og da jeg opdaterede siden, sagde den at der allerede var en key defineret
Avatar billede ultik Nybegynder
24. december 2000 - 02:30 #24
  sqlAutoNr = \"ALTER TABLE nickpics CHANGE id id INT (10) DEFAULT \'0\' not null AUTO_INCREMENT\"

det er den jeg kører i den linie
Avatar billede ultik Nybegynder
24. december 2000 - 02:32 #25
ahh

vent, min SQL manual bruger ikke change, men modify, kan det være der den ligger ?
Avatar billede ultik Nybegynder
24. december 2000 - 02:35 #26
  sqlAutoNr = \"ALTER TABLE nickpics MODIFY (id INT (10) DEFAULT \'0\'  not null AUTO_INCREMENT)\"

så kommer den med den her istedet :

Incorrect syntax near \'(\'.
Avatar billede lp Nybegynder
24. december 2000 - 02:35 #27
ok, så fjern den første linje....hvis bare jeg kunne se din manual.......jeg kan ikke finde min.....
Avatar billede ultik Nybegynder
24. december 2000 - 02:37 #28
har du ICQ ? ellers kan jeg sende pr mail

mit ICQ# 23831876
Avatar billede ultik Nybegynder
24. december 2000 - 02:37 #29
hele mit script ser sådant her ud :

<!--#include file=\"../inc/db.asp\"-->
<%
OpenDb
  sqlAutoNr = \"ALTER TABLE nickpics MODIFY (id INT(10) DEFAULT \'0\'  not null AUTO_INCREMENT)\"
  connDb.Execute(sqlAutoNr)
LukDb
%>
Avatar billede lp Nybegynder
24. december 2000 - 02:38 #30
prøv at droppe de parentesen omkring hele sql\'en......altså:

sqlAutoNr = \"ALTER TABLE nickpics MODIFY (id INT (10) DEFAULT \'0\'  not null AUTO_INCREMENT)\"

kan du tjekke om MS SQL understøtter auto_increment eller om det hedder noget andet.....
Avatar billede lp Nybegynder
24. december 2000 - 02:38 #31
DOHHH - Glemte at fjerne parenteserne :-)

sqlAutoNr = \"ALTER TABLE nickpics MODIFY id INT (10) DEFAULT \'0\' not null AUTO_INCREMENT\"

Avatar billede ultik Nybegynder
24. december 2000 - 04:44 #32
k, vi har været igang på icq det meste af natten, vi er der næsten, når jeg er helt færdig kommer forklaringen lige.......
Avatar billede ultik Nybegynder
24. december 2000 - 05:03 #33
nu er vi altså kommet så langt at vi mangler en SQL kommando til at omdøbe en tabel,

vi har prøvet med ALTER TABLE nickpics TO nickpicsold

men det vil den ikke godtage.......

jeg vil til at i seng, hvis nogen kan komme med den kommando så kan vi få det hele stykket sammen og smidt herop.......

god jul ellers
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
Kurser inden for grundlæggende programmering

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