16. marts 2001 - 17:29Der er
6 kommentarer og 1 løsning
fremmed nøgle, hvordan?
Ok, så kommer ugens dumme spørgsmål:
Hvis jeg har to tabeller med hver sin primærnøgle, og jeg oprette en tredie tabel som kommer til at indeholde disse primærnøgler som fremmednøgler, hvordan sikrer jeg mig at den nye tabel bliver opdateret når de gamle tabeller opdateres??
\"CASCADE: Enhver ændring af en primær nøgleværdi bliver også gennetvunget i alle refererende kolonner med fremmednøgler. Hvis f.eks. REFNR for Større ansigtsløftninger ændres fra AN2 til AN3, vil alle rækker i tabellen ADMINISTRATION der har værdien AN2 i REFNR, få værdien ændret til AN3. Hvis Større ansigtsløftning bliver slettet fra tabellen BEHANDLING, vil alle rækker i ADMINISTRATION, der refererer til denne behandling, ligeledes blive fjernet\" (IDG \"Start på SQL\")
Noget lignende:
FORIGN KEY (whatever) REFERENCES allsowhatever ON UPDATE CASCADE
Ok, det ser ud til, at triggers ikke rigtigt kan bruges her - måske hvis man kunne lave triggers på et view, men det kan man ikke...!
Jeg går her ud fra, at det er ved indsættelse af nye records, at den tredje tabel (som jo indeholder mange-mange-relationer mellem de to andre) skal holdes opdateret. Her følger et eksempel på sådan noget:
Vi har to hovedtabeller - t1 og t2, som begge ser sådan ud:
id int identity, text char(10)
Så har vi en tredje tabel - t1_t2:
id int identity, t1id int, t2id int
For at sikre os, at t1_t2 bliver holdt opdateret, når vi indsætter records i t1_t2 bliver vi nødt til at benytte os af en stored procedure til at indsætte records med: ----------------------------- create procedure insert_t1_t2 @t1text char(10), @t2text char(10) as declare @t1id int declare @t2id int
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.