Avatar billede keet Nybegynder
22. september 2004 - 11:10 Der er 2 kommentarer og
2 løsninger

trigger skal tjekke id

Jeg har 2 tabeller.

Table1(user_id, name, address)
Table2(email, user_id)

Kan jeg lave en trigger for table2 der tjekker for at det user_id der bliver indsat i table2 eksisterer i table1?
Avatar billede holdam Nybegynder
22. september 2004 - 11:14 #1
Det kan du såmænd godt, f.eks. i en before-insert trigger hvor du laver et SELECT mod table1 af den pågældende user_id og så RAISE'r en exception hvis den ikke findes. Det kræver så at table1 og table2 ikke er "mutating" (men det opdager du hvis du prøver!).

Men det synes mere oplagt at pålægge user_id-kolonnen in table2 en fremmednøgle-constraint som sikrer at alle user_id's findes i user_id-kolonnen i table1.
Avatar billede keet Nybegynder
22. september 2004 - 11:41 #2
hvordan laver jeg en sådan constraint?
Avatar billede holdam Nybegynder
22. september 2004 - 11:55 #3
ALTER TABLE table2 ADD CONSTRAINT table2_fk FOREIGN KEY(user_id) REFERENCES table1(user_id);

Bemærk at du skal først lave en PRIMARY KEY (eller UNIQUE KEY) constraint på table1, hvis ikke du allerede har det:

ALTER TABLE table1 ADD (PRIMARY KEY (user_id));
Avatar billede keet Nybegynder
22. september 2004 - 14:20 #4
cool nok :) tak for hjælpen
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