Werte in zweiter Tabelle löschen, falls in der ersten gelöscht

Kampfgummibaerlie

Datenbank-Guru
Beiträge
728
Hallo, ich wiedermal :D

Habe inzwischen viele Erfahrungen gemacht, aber den gerade eben poste ich mal:

Ich erstelle eine Tabelle mit einem Integer (Beispiel), und einer Trigger-Procedure, die den selben Wert in die Tabelle two einfügt, und gebe in die Tabelle one den Wert 1 hinzu.
Code:
create table one(id integer primary key);
create table two(id integer references one(id) on delete cascade);
create function repeat() returns trigger as $$ begin insert into two(id) values (new.id); return new; end; $$ language plpgsql;
create trigger repeat after insert on one for each row execute procedure repeat();
insert into one(id) values (1);

Zum testen ob der Wert 1 in der Tabelle two ist.
Code:
select * from two;

(Wert 1 ist drin)

Schauen, ob der Foreign Key mit dem Cascade auch funktioniert:
Code:
delete from one;
select * from two;

(Kein Wert 1 mehr drin)

Wäre jetzt sehr interessiert was alles mit Events bei Foreign Keys möglich ist ^^

Freue mich auf Diskussionen darüber :D
 
Werbung:
Wäre jetzt sehr interessiert was alles mit Events bei Foreign Keys möglich ist

ich wäre ja interessiert zu erfahren, was Du mit Deinem SQL-Code (Erstellung der zwei Tabellen mit je einer Spalte und dem TRIGGER) für ein reales Problem lösen willst? ;-)

Typischerweise verwendet man sowas für 1:N - Relationen, und typischerweise würde Deine Tabelle "two" weitere 'Payload' - Spalten enthalten, um eben eine 1:N - Beziehung dazustellen.
 
Ich hätte gerne, dass wenn ich in der Tabelle "Schnittmuster" einen Datensatz lösche, sich auch alle Produkte mit diesem Schnittmuster löschen.

Warum?
Wenn Mutter im Nachhinein draufkommt, ist doch nicht so klug (warum auch immer), und das Schnittmuster löscht, damit sich ebenfalls aus der Tabelle Produkte alle Produkte mit dem jeweiligen Schnittmuster löschen.

(Produktrückholaktiontechnisch denke ich bereits)...
 
Werbung:
Zurück
Oben