Ich habe zwei Tabellen:Fremdschlüssel von 2 Spalten der gleichen Tabelle mit dem gleichen Primärschlüssel
Benutzer
id | username
--------------
1 | James
2 | John
3 | Jack
4 | Jim
5 | Jane
6 | Jessica
Junioren
senior_id | junior_id
-----------------------
1 | 4
1 | 6
2 | 3
4 | 5
Sowohl die senior_id
und junior_id
beziehen Sie sich auf die users
Tabelle id
Spalte.
Wie kann ich es so, dass a) sichergestellt ist, dass beide senior_id
und junior_id
existieren in users
und b) ein delete
von users
aus juniors
alle Instanzen der gelöschten ID kaskadieren und entfernen, ob es ein senior_id
oder junior_id
? I.e. Durch das Löschen von Jim im obigen Beispiel werden automatisch sowohl der erste als auch der letzte Datensatz von Junioren entfernt.
Ich habe versucht, dies mit zwei separaten Einschränkungen zu tun. Aber wenn ich eine Kaskade für beide Bedingungen aufstelle, bekomme ich einen 'kann Zyklen oder mehrere Kaskadenpfade verursachen' Fehler.
Und wenn ich es auf nur eine Bedingung setzen, scheitert ein Löschen (in einem Fall wie Jim), weil es nur auf eine der Spalten kaskadiert und damit gegen die Einschränkung verstößt.
muss ich in der Lage sein, diese Server auf SQL zu tun 2005.
Dank, und ich verstehe, was Sie über den Tisch Design sagen. Leider habe ich es mit einer Viele-zu-Viele-Beziehung zu tun, d. H. In diesem Fall kann ein Junior mehr als einen Senior haben. Also auch das in der users-Tabelle funktioniert hier nicht. – IamNaN
oh! es wird nicht in vielen zu vielen Beziehung arbeiten.Dann Creating 2 Trigger ist die beste Option. – KumarHarsh