Avatar billede schacks Nybegynder
12. december 2000 - 02:20 Der er 10 kommentarer

SQL autonummerering

Hej
  Jeg er nybegynder med MS SQL og ASP, og jeg har et problem med at oprette en tabel med autonummerering.
  Jeg har prøvet følgende:

CREATE TABLE (Nøgle Integer auto_increment PRIMARY KEY, DK TEXT(20) NOT NULL, Type Integer NOT NULL, Reference TEXT(80) NOT NULL, Aktiveret Integer, Sikkerhed Integer)

Men det virker tilsyneladende ikke. Jeg har også prøvet at indsætte \"autonumb\", \"autonum\" og \"auto increment\".
Avatar billede tdaugaard Nybegynder
12. december 2000 - 04:55 #1
nu ved jeg ikke med MS SQL, men MySQL (og de fleste andre ODBC drivere der bruger SQL..) bruger PRIMARY KEY således .. måske det har noget at sige .. (du mangler da også et tabel navn!?)

CREATE TABLE dit_tabel_navn (Nøgle auto_increment, DK TEXT(20) NOT NULL, Type Integer NOT NULL, Reference TEXT(80) NOT NULL, Aktiveret Integer, Sikkerhed Integer, PRIMARY KEY(nøgle))
Avatar billede pierrehusted Nybegynder
12. december 2000 - 08:35 #2
Hvis det er på en MS SQL Server 7.0 kan det gøres således :

CREATE TABLE [dbo].[TABLE1] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [feltnavn1] [char] (10) NULL ,
    [feltnavn2] [varchar] (50) NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TABLE1] WITH NOCHECK ADD
    CONSTRAINT [PK_TABLE1] PRIMARY KEY  NONCLUSTERED
    (
        [id]
    )  ON [PRIMARY]
GO

Avatar billede schacks Nybegynder
12. december 2000 - 09:04 #3
tdaugaard (hmm. lyder meget som en jeg kender), nå, men det er rigtigt, i eksemplet mangler der et tabel navn. Det er dog fordi at det er genereret af ASP med følgende SQL forespørgsel:

---------
SQL=\"CREATE TABLE \" & Reference & \" (\"
SQL=SQL & Reference & \"Nøgle Integer auto_increment PRIMARY KEY, \"
SQL=SQL & Reference & \"DK TEXT(20) NOT NULL, \"
SQL=SQL & Reference & \"Type Integer NOT NULL, \"
SQL=SQL & Reference & \"Reference TEXT(80) NOT NULL, \"
SQL=SQL & Reference & \"Aktiveret Integer, \"
---------

Jeg havde så ikke indsat nogen \"Reference\".

Jeg har prøvet med dit forslag, hvor jeg har indsat \"test\" som reference og får følgende SQL sætning og fejlmeddelelse.

---------
CREATE TABLE test (testNøgle auto_increment, testDK TEXT(20) NOT NULL, testType Integer NOT NULL, testReference TEXT(80) NOT NULL, testAktiveret Integer, testSikkerhed Integer)
Microsoft JET Database Engine fejl \'80040e14\'

Syntax error in field definition.

/homepage4/tur/MenuAdministrationMigSideRedigeringNyMenu.asp, linje 20
---------

Sætningen virker fint hvis jeg

Linie 20 er der hvor SQL sætningen bliver eksekveret.

Mit eget eksempel virker fint hvis jeg fjerner Auto_Increment.
Avatar billede schacks Nybegynder
12. december 2000 - 09:32 #4
Pierrehusted
Den der \"go\" der bliver tilføjet i slutningen af din SQL, den er jeg ikke lige stødt på før?
Avatar billede schacks Nybegynder
12. december 2000 - 09:44 #5
Pierrehusted
Jeg har prøvet med følgende SQL/ASP sætning, efter at have oprettet tabellen.

----------
SQL=\"ALTER TABLE \" & Reference & \"WITH NOCHECK ADD CONSTRAINT PK_\" & Reference & \" PRIMARY KEY  NONCLUSTERED ([id])  ON [PRIMARY]\"
set eksekvering2=forbindelse.execute(SQL)
----------

og jeg får

----------
Microsoft JET Database Engine fejl \'80040e14\'

Syntax error in ALTER TABLE statement.

/homepage4/tur/MenuAdministrationMigSideRedigeringNyMenu.asp, linje 22
----------
Avatar billede pierrehusted Nybegynder
12. december 2000 - 15:29 #6
Så vidt jeg husker beder GO den om at udføre hvad den har fået af kommandoer dertil - inden den går videre.
Jeg ved ikke om den altid er nødvendig - men Enterprise Manager er ret glad for den og tager den med i alt genereret kode.
Avatar billede pierrehusted Nybegynder
12. december 2000 - 15:30 #7
GO bruges dog kun hvis man har direkte adgang til serveren - ikke hvis man bruger ASP.
Avatar billede schacks Nybegynder
12. december 2000 - 17:09 #8
OK, jeg står bare kritisk og skal bruge en løsning på mit problem. Jeg skal på jordomrejse i morgen, og til den tid skal det være muligt for mig at oprette nye menupunkter uden adgang til en IIS personlig web server.

www.tur.isme.dk
Avatar billede sbarnney Nybegynder
16. januar 2001 - 20:19 #9
Har du adgang til SQL severen ? Isåfald går du direkt i design view på tabellen, vinger \"allow nulls\" fra, og vinger \"identify\" til. Dette vil give den ønsket autonummerering.

Stig
Avatar billede ejoergensen Nybegynder
02. februar 2005 - 14:30 #10
Skal dette aldrig lukkes?
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