webForumDet fria alternativet

Raderingsproblem

2 svar · 282 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 447 inlägg
#1

Jag försöker radera rader ur två tabeller i SQL Server, baserat på datumet i den ena tabellen och stöter på patrull eftersom (om jag förstår saken rätt) relationerna är sådana att jag måste radera i rätt ordning.

I tabellen tblEventMain ligger information om evenemang i ett kalendarium, och i tblEventTimes ligger datum och tider för dessa evenemang. Ett evenemang i tblEventMain kan alltså ha relation till flera rader med datum och tid i tblEventTimes.

Jag avänder SQL-frågorna nedan för att först radera evenemangen tblEventMain och sedan evenemangens relaterade rader i tblEventTimes. Mitt problem är att jag måste ha kvar de relaterade posterna i tblEventTimes för att kunna radera från tblEventMain baserat på datum, och det går ju inte om jag först raderar datumen. Nåväl, ni förstår säkert genom att titta på SQL:en.

DELETE FROM tblEventMain
WHERE id IN (SELECT E.id FROM tblEventMain E, tblEventTimes T WHERE E.id = T.eventRef AND T.date < '2003-01-01')
DELETE FROM tblEventTimes T WHERE T.date < '2003-01-01'

Felmeddelande:

DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_tblEventTimes_tblEventMain'. The conflict occurred in database 'LS1', table 'tblEventTimes', column 'eventRef'.

Tack på förhand!

BrimbaMedlem sedan dec. 19992 966 inlägg
#2

Antingen skriver du en SP där du sparar dina ID i en temporärtabell (DECLARE @tmp TABLE(id int)) exempelvis.

Alternativet är att du ställer in din relation mellan tabellerna att när du raderar en post från "huvudtabellen" så skall de relaterade posterna i alla andra tabeller också raderas.

SkarreMedlem sedan apr. 20012 447 inlägg
#3

Tror du att du skulle kunna utveckla en aning? Hur ställer jag in relationen så att relaterade poster raderas?

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb