Gå til innhold

Hva er galt i denne enkle kodefnutten?


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

Uten å ha den minste anelse om noenting skal jeg alikevel spørre deg om en ting :)

 

Hvorfor har to av variablene VARCHAR2 og den siste VARCHAR ?

Skrevet (endret)
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
Gjest Slettet+142
Skrevet
snr NUMBER(5),

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

Skrevet
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å.

Skrevet
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..

Skrevet

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!

Skrevet
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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...