Hallo Leute,
ich habe eine Tabelle mit einer Spalte, die auf verschiedene Tabellen verweist. Ich würde dieser Spalte gerne mehrere Foreign-Keys hinzufügen, die an eine zwei Spalte gebunden wären.
Zwei Beispiele:
- Wenn in der Tabelle desk id 12 gelöscht wird, sollen in der Tabelle cart alle Zeilen gelöscht werden, wo item_id 12 steht UND item_type = desk steht.
- Wenn in der Tabelle shelf id 17 gelöscht wird, sollen in der Tabelle cart alle Zeilen gelöscht werden, wo item_id 17 UND item_type = shelf steht.
Ich habe versucht das Ganze mal etwas vereinfacht darzustellen.
Hatte schon überlegt, dass vllt mit Views zu lösen, aber hab mich gefragt, ob es nicht noch einfacher geht.
Gruß, Tommy
EDIT:
Bei Views wäre das Problem, dass ich keine INSERT in die Views machen könnte, wo ich der item_type Spalte einen Default Wert je View geben könnte und ich könnte auch keine Foreign-Keys verwenden. Somit helfen mir Views gar nicht weiter.
ich habe eine Tabelle mit einer Spalte, die auf verschiedene Tabellen verweist. Ich würde dieser Spalte gerne mehrere Foreign-Keys hinzufügen, die an eine zwei Spalte gebunden wären.
Zwei Beispiele:
- Wenn in der Tabelle desk id 12 gelöscht wird, sollen in der Tabelle cart alle Zeilen gelöscht werden, wo item_id 12 steht UND item_type = desk steht.
Code:
DELETE FROM desk WHERE id = 12;
DELETE FROM cart WHERE item_id = 12 AND item_type = 'desk';
- Wenn in der Tabelle shelf id 17 gelöscht wird, sollen in der Tabelle cart alle Zeilen gelöscht werden, wo item_id 17 UND item_type = shelf steht.
Code:
DELETE FROM shelf WHERE id = 17;
DELETE FROM cart WHERE item_id = 17 AND item_type = 'shelf';
Ich habe versucht das Ganze mal etwas vereinfacht darzustellen.
Hatte schon überlegt, dass vllt mit Views zu lösen, aber hab mich gefragt, ob es nicht noch einfacher geht.
Gruß, Tommy
EDIT:
Bei Views wäre das Problem, dass ich keine INSERT in die Views machen könnte, wo ich der item_type Spalte einen Default Wert je View geben könnte und ich könnte auch keine Foreign-Keys verwenden. Somit helfen mir Views gar nicht weiter.
Zuletzt bearbeitet: