Hej, Du kan titta på cascade delete. Men det kan vara farligt. T.ex. Minns när en användara tog bort en kund. Så försvann alla dess offerter. Vilket de ville behålla. Stort tack Andreas!Ta bort värden från flera tabeller med indirekta relationer...
Jag vill när användaren trycker på en knapp köra sql-satser som tar bort allt som hör till ett visst kvall_id.
Min databas är uppbyggd på följande tabeller (som rör kvallen):
tblKvall - kvall_id (primär) + fler fält
tblNarvarande - narvarande_id (primär), kvall_id (från tblKvall) + fler fält
tblTest - test_id (primär), kvall_id (från tblKvall) + fler fält
tblTestprod - testprod_id (primär), test_id (från tblTest) + fler fält
tblTestprodbetyg - testprodbetyg_id (primär), testprod_id (från tblTestprod) + fler fält
..och så vill jag ta bort allt som hör till ett visst kvall_id i tblKvall. Och direkt så berörs tblNarvarande och tbTest men däremot tblTestprod och tblTestprodbetyg är berörda indirekt (ska också tas bort).
1. Hur ska jag skriva sql-satser för att genomföra detta?
2. Har jag byggt mina tabeller fel? Bör jag ha med kvall_id i varje tabell?
Tacksam för svar,
//mvh Björn
Sv: Ta bort värden från flera tabeller med indirekta relationer...
Så ur användningsbarhet bör du informera inan bortagning vilka tabeller som drabads så användaren innser vad den göra.
Om du vill göra det den jobbiga vägen med SQL frågor:
DELETE FROM tblTestprodbetyg
WHERE tblTestprodbetyg.testprod_id IN (SELECT tblTestprod.testprod_id
FROM tblTestprod INNER JOIN
tblTest ON tblTestprod.test_id = tblTest.test_id
WHERE tblTest.kvall_id = @kvall_id)
DELETE FROM tblTestprod
WHERE tblTestprod.test_id IN (SELECT tblTest.test_id
FROM tblTest
WHERE tblTest.kvall_id = @kvall_id)
DELETE FROM tblTest
WHERE tblTest.kvall_id = @kvall_id
DELETE FROM tblNarvarande
WHERE tblNarvarande.kvall_id = @kvall_id
Sv:Ta bort värden från flera tabeller med indirekta relationer...
Det funkar kanon. Körde jobbiga vägen med SQL-frågor.
Nu ska jag bara få upp användarvänligheten också.
//mvh Björn