Hallo zusammen,
ich haben eine VIEW (VW_EAUFTRAG) die nur Datensätze anzeigt deren Löschdatum, Feld DD = NULL ist.
Ein Delete auf die VIEW soll nur den Eintrag eines TimeStamps in
das Feld DD der Tabelle EAUFTRAG zur Folge haben.
Zum Insert/Update/Delete werden Trigger eingesetzt.
CREATE VIEW VW_EAUFTRAG(ID, ... , DD)
AS
select
ID, ... , DD
from EAUFTRAG
where DD is NULL;
CREATE TRIGGER VW_EAUFTRAG_BD FOR VW_EAUFTRAG
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
UPDATE EAUFTRAG
SET DD = CURRENT_TIMESTAMP
WHERE (ID = OLD.ID);
END
Wenn ich nun ein das Statement
DELETE FROM VW_EAUFTRAG WHERE ID=2
ausführe, bekomme ich folgendes Ergebnis (IBExpert):
1 record(s) was(were) updated in EAUFTRAG
1 record(s) was(were) deleted from EAUFTRAG
und der Datensatz in EAUFTRAG ist weg!
Es wird also das Update im Trigger VW_EAUFTRAG_BD ausgeführt und anschließend zusätzlich der Satz in der Tabelle gelöscht.
Frage:
Wer oder was veranlaßt FB 1.5.2 den Satz zu löschen?
Ich war der Meinung für das "Löschen" in einer View ist nur der Trigger verantwortlich.
Wie kann ich das Löschen der Satzes in EAUFTRAG unterbinden?
alex
ich haben eine VIEW (VW_EAUFTRAG) die nur Datensätze anzeigt deren Löschdatum, Feld DD = NULL ist.
Ein Delete auf die VIEW soll nur den Eintrag eines TimeStamps in
das Feld DD der Tabelle EAUFTRAG zur Folge haben.
Zum Insert/Update/Delete werden Trigger eingesetzt.
CREATE VIEW VW_EAUFTRAG(ID, ... , DD)
AS
select
ID, ... , DD
from EAUFTRAG
where DD is NULL;
CREATE TRIGGER VW_EAUFTRAG_BD FOR VW_EAUFTRAG
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
UPDATE EAUFTRAG
SET DD = CURRENT_TIMESTAMP
WHERE (ID = OLD.ID);
END
Wenn ich nun ein das Statement
DELETE FROM VW_EAUFTRAG WHERE ID=2
ausführe, bekomme ich folgendes Ergebnis (IBExpert):
1 record(s) was(were) updated in EAUFTRAG
1 record(s) was(were) deleted from EAUFTRAG
und der Datensatz in EAUFTRAG ist weg!
Es wird also das Update im Trigger VW_EAUFTRAG_BD ausgeführt und anschließend zusätzlich der Satz in der Tabelle gelöscht.
Frage:
Wer oder was veranlaßt FB 1.5.2 den Satz zu löschen?
Ich war der Meinung für das "Löschen" in einer View ist nur der Trigger verantwortlich.
Wie kann ich das Löschen der Satzes in EAUFTRAG unterbinden?
alex
Comment