Gå til innhold

Problemer med relasjoner mellom tabeller i SQL


Anbefalte innlegg

hei, jeg har et prosjekt gående og har liten opplæring med sql plus på oracle-database. Er det noen som ser hvor jeg har feilen? gjerne gi meg en rett kode dersom de gidder. Jeg skal ordne sekvenser på IDene selv så trenger ikke tenke på det ;)

 

 

create table forum(

forumnummer integer primary key,

forumNavn varchar(60) not null);

 

create table tema(

temaID integer primary key,

temaNavn varchar(50) not null,

temaDato date,

foreign key(forumnummer) references forum);

 

create table traad(

traadID integer primary key,

traadNavn varchar(50) not null,

traadDato date,

foreign key(temaID) references tema);

 

create table innlegg(

innleggID integer primary key,

innleggDato date,

innleggTekst varchar(50) not null,

foreign key(traadID) references traad,

foreign key(brukerID) references bruker);

 

create table bruker(

brukerID integer primary key,

brukerNavn varchar(50) not null,

brukerBrukernavn varchar(50) not null,

brukerPassord varchar(50) not null,

brukerEpost varchar(50) not null,

foreign key(forumID) references forum);

 

commit;

Og her er feilmld jeg får

FEIL på linje 5:

ORA-00904: "FORUMNUMMER": ugyldig ID

 

 

foreign key(temaID) references tema)

*

Lenke til kommentar
Videoannonse
Annonse

Hvis Oracles SQL syntax er noe liknende MS SQL Servers så skal det være slik:

 

create table forum(
forumnummer integer primary key, 
forumNavn   varchar(60) not null);

create table tema(
temaID       integer primary key,
temaNavn     varchar(50) not null,
temaDato     date,
forumnummer integer,
foreign key(forumnummer) references forum(forumnummer));

 

Godt mulig at dette ikke validerer, men hovedpoenget er at foreign key nøkkelordet må fortelle hvilken kolonne i tema tabellen som refererer hvilken kolonne i forum tabellen. Altså, forumnummer i foreign key(forumnummer) peker til kolonnen i tabellen tema, mens forum(forumnummer) refererer til kolonnen forumnummer i tabellen forum.

 

Slik er det iallefall på SQL Server, mer eller mindre (husker ikke syntaxen 100% i hodet). Mulig at nøkkelordet constraint navn skal være foran foreign key.

Lenke til kommentar

Mulig at det kan gjøres enklere enn det også:

 

create table forum(
forumnummer integer primary key,
forumNavn   varchar(60) not null);

create table tema(
temaID       integer primary key,
temaNavn     varchar(50) not null,
temaDato     date,
forumnummer integer references forum(forumnummer));

I alle fall er det som kaffenils sier, du må nok peke til kolonnen og ikke bare tabellen.

 

M.

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