webForumDet fria alternativet

Rensa tabeller med relationer?

5 svar · 367 visningar · startad av inspiro

inspiroMedlem sedan sep. 2005673 inlägg
#1

Jag tänkte försöka rensa upp i ett par tabeller med hjälp av ett datum i en av tabellerna. Men hur får man bort alla relaterade data?

Alltså, säg att jag har tabell A. Den innehåller bland annat ett datumfält och alla poster där datumet är äldre än ett år ska raderas, det är ju enkelt. Men den här tabellen har flera en till många-relationer med andra tabeller. Så om jag hittar 20 poster i tabell a som ska raderas, hur raderar jag poster i andra tabeller som hör ihop med dessa 20? Kan man ha joins i en delete?

@ndersMedlem sedan juni 200032 969 inlägg
#2

on delete cascade

inspiroMedlem sedan sep. 2005673 inlägg
#3

Jag får itne till det. Är det ren sql som ska skrivas in eller måste man göra något mer? Relationerna mellan mina tabeller finns bara i min sql, om jag förstått det rätt så ska man skapa relationer på något annat vis för att det ska fungera? Kan man göra det i efterhand?

Använder sql server 2005 express och management studio.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Om dina relationer inte är definierade med nycklar får du göra dina deletes manuellt - databasservern kan ju inte gissa vilka poster i vilka tabeller som hör ihop.

I min SQL Server Books OnLine (för SQL Server 2000) finns ett kapitel med titeln Deleting Rows with DELETE. Google är annars teh shit.

inspiroMedlem sedan sep. 2005673 inlägg
#5

Jo, nycklar har jag definierat. Däremot kan man ju göra olika scheman och sätta relationer i managment studio på olika sätt, förstår inte riktigt hur det fungerar än men jag tänkte lära mig förstås! Men om jag har angett nycklar i mina tabeller så kan jag alltså använda on delete cascade?

Skulle någon kunna ge mig ett enkelt exempel? Säg att jag har följande:

Tabell A

ID (nyckel) | Name

Tabell B

ID (nyckel) | TabellA_ID | Name

Hur får man snabbast bort alla poster i tabell b som har en relation till det som raderas i tabell a?

@ndersMedlem sedan juni 200032 969 inlägg
#6

Det är klart att det är bra att du satt primärnycklar - men du måste sätta främmande nycklar (foreign keys), annars har inte servern någon aning om vilka poster som hör ihop.

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)