Toon posts:

[MS SQL Server] update/delete en FK's

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb bijvoorbeeld de volgende 2 tabellen:
code:
1
2
3
4
tblTest1        tblTest2
kol1 (PK)        kol1 (PK)
kol2 enz...    kol2 (PK)
              kol3 enz...

Er ligt een Foreign Key van tblTest2.kol1 naar tblTest1.kol1

Wanneer ik nu een record uit tblTest1 verwijder, terwijl er nog records in tblTest2 staan die naar dit record verwijzen gaat het dus fout.

Weet iemand hoe dit probleem op te lossen? Met een trigger lukt het volgens mij niet, omdat deze pas uitgevoerd wordt nadat het record uit tblTest1 al verwijderd is (wat dus niet kan, ivm bovengenoemd probleem)

Het probleem geld natuurlijk ook bij updates.

edit:

Ik kan me uit een grijs Access verleden herinneneren dat je in Access een optie in kon stellen bij een relatie die dit automatisch voor je regelde. Is er misschien in SQL server ook zoiets?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
In principe mag dit ook niet, ik snap best wat je wil maar logischerwijs is het niet correct, in veel van dit soort gevallen is het veel handiger om een delete flag te maken.

Wil je dit niet dan zou je de trigger op table2 moeten maken, stel je delete een record van userid 3 vervolgens bouw je een trigger die kijkt of er nog items van user 3 in zitten, zo niet dan kan je een delete doen op table 1 en delete je user 3

Verwijderd

Topicstarter
Ik kom in de documentatie bij 'Relationships Property Page' het volgende tegen:

---
Relationships Property Page

This property page contains a set of properties for the relationships between the tables in your database.

...aantal opties...

Cascade Update Related Fields
Instructs the DBMS to automatically update foreign-key values of this relationship whenever the primary-key value is updated.

Cascade Delete Related Fields
Instructs the DBMS to automatically delete rows of the foreign-key table whenever the referred-to row of the primary-key table is deleted.
---

Die laatste 2 opties, die zou ik dus moeten hebben. Helaas staan deze niet op het tabblad en kan ik ze (dus) ook niet aanvinken :(

Ik heb dit gehaald uit 'SQL Server Books Online' van MicroSoft

edit:

Hmmm, ik zie het al. Dit is pas beschikbaar in SQL Server 2000, terwijl ik hier op een SQL Server 7.0 werk... damn... ;)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 28 november 2001 16:23 schreef Insomnia het volgende:
edit:

Hmmm, ik zie het al. Dit is pas beschikbaar in SQL Server 2000, terwijl ik hier op een SQL Server 7.0 werk... damn... ;)
Bovendien is dat ook een erg gevaarlijke optie, want dat betekend ook dat als je een foutje gemaakt hebt, alles weg is...

Verwijderd

Topicstarter
Op woensdag 28 november 2001 16:37 schreef ACM het volgende:

[..]

Bovendien is dat ook een erg gevaarlijke optie, want dat betekend ook dat als je een foutje gemaakt hebt, alles weg is...
True.. true... vervelend dat als je een artikel uit je db verwijderd, meteen alle orders die naar dat artikel verwijzen ook verwijderd worden ;)

Misschien idd beter als ik het anders oplos. Vooradat er iets uit tblTest1 verwijderd wordt, het eerst uit tblTest2 verwijderen. Zo wordt er eerst goed over nagedacht en kunnen er idd geen rare dingen gebeuren.

Thnx