Gå til innhold

Hva er galt i denne enkle kodefnutten?


Anbefalte innlegg

Hva er galt her?

 

CREATE TABLE studentregister(
 snr          NUMBER(5),
 fornavn      VARCHAR2(20),
 etternavn    VARCHAR2(10),
 adresse      VARCHAR2(20),
 constraint snr [PRIMARY KEY (snr)]);

 

Får denne feilmeldingen opp: ORA-00904::invalid identifier

Endret av überGoliath
Lenke til kommentar
Videoannonse
Annonse
Hva er galt her?

 

CREATE TABLE studentregister(
  snr          NUMBER(5),
  fornavn      VARCHAR2(20),
  etternavn    VARCHAR2(10),
  adresse      VARCHAR2(20),
  constraint snr [PRIMARY KEY (snr)]);

 

Får denne feilmeldingen opp: ORA-00904::invalid identifier

6329926[/snapback]

Hvis du ser på feilmeldingen du får (den hele), så ser du at det står en * under [, som indikerer hvor feilen er. Korrekt kode som fungerer helt fint vil være:

CREATE TABLE studentregister(
snr NUMBER(5),
fornavn VARCHAR2(20),
etternavn VARCHAR2(10),
adresse VARCHAR2(20),
CONSTRAINT snr PRIMARY KEY (snr));

 

Ellers foretrekker jeg helt klart å ha et navn på constraints som i seg selv sier hvilken tabell den hører til. Dette er av flere grunner, du kan blant annet ikke ha to constraints som heter det samme. I en større databasemodell blir det fort to kolonner som heter det samme, som du ønsker å ha constraint på. Litt mer omdiskutert er det dog om man skal ha et prefiks for type constraint, f eks fkFremmednøkkel, pkPrimærnøkkel, ukUnik, ckCheck.

Endret av roac
Lenke til kommentar
snr NUMBER(5),

burde ikkje egentlif "NUMBER" gjøres om til INT ??

6330304[/snapback]

Det kommer an på om koden skal klargjøres for andre plattformer eller ikke. Datatypen til Oracle heter number, i ANSI SQL heter den int. Dersom koden uansett bare skal brukes på Oracle hadde jeg helt klart benyttet number, mens jeg ville valgt int dersom koden skulle kunne benyttes på andre databaseplattformer også.

Lenke til kommentar
Korrekt kode som fungerer helt fint vil være:

CREATE TABLE studentregister(
snr NUMBER(5),
fornavn VARCHAR2(20),
etternavn VARCHAR2(10),
adresse VARCHAR2(20),
CONSTRAINT snr PRIMARY KEY (snr));

6330270[/snapback]

Takk for tipset roac men får feilmelding "INVALID CHARACTER".

 

 

Bruker oppmot Oracle ja, derfor bruker jeg NUMBER..

Lenke til kommentar

Fikk det fungerende nå ved å skrive:

 

CREATE TABLE studentregister(
snr NUMBER(5),
fornavn VARCHAR2(20),
etternavn VARCHAR2(10),
adresse VARCHAR2(20),
CONSTRAINT studentregister_fnr_pk PRIMARY KEY(snr))

 

Var constraint'en som ikke var skrevet helt rikitg.

 

Takk for hjelp folkens, spesielt roac!

Lenke til kommentar
Var constraint'en som ikke var skrevet helt rikitg.

 

Takk for hjelp folkens, spesielt roac!

6330791[/snapback]

Gleden er på min side. Jeg holder på å lese meg opp til sertifiseringer på Oracle, og da er andres små problemer bare en kjærkommen erfaring.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...