webForumDet fria alternativet

Raderingsproblem

Databaser & SQL

2 svar · 284 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#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!

Medlem sedan dec. 19995 874 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.

Medlem sedan apr. 20012 427 inlägg
#3

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

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)