inspiroMedlem sedan sep. 2005673 inlägg 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?
inspiroMedlem sedan sep. 2005673 inlägg 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 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 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 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.