Ich schreibe Trigger, in dem ich Wert in track
Tabelle einfügen muss, wenn Wert in parent_key
Tabelle ändert. Ich muss prüfen, ob der Wert Null ist, dann setze ich ihn leer, sonst den alten Wert und dasselbe, was ich für einen neuen Wert tun muss. Ich habe die folgende case-Anweisung ausprobiert, sie wird jedoch nicht in die Verweistabelle eingefügt, wenn der ursprüngliche alte/neue Wert null ist.Fall, wenn null, dann leer in Oracle einfügen Anweisung
create or replace TRIGGER parent_key_trg AFTER UPDATE ON parent_key
FOR EACH ROW
BEGIN
IF NOT :old.track_name=:new.track_name THEN
INSERT INTO track (TRACK_OLD_VALUE,TRACK_NEW_VALUE)
VALUES (case when :old.track_name is null then '' else to_char(:old.track_name) end,case when :new.track_name is null then '' else to_char(:new.track_name) end);
END IF;
END;
aber warum muss ich in IF-Anweisung ändern? Weil ich in if-Anweisung nur den alten Wert überprüfen muss, der nicht gleich dem neuen Wert ist, dann wird es in dem Fall gehen, wenn die Anweisung – Andrew
Ich habe es weiter erklärt. Im Grunde können Sie 'NULL = NULL' nicht vergleichen, Sie können' NULL IS NULL' oder ''Literal' = 'Literal'', aber nicht' NULL =' Literal'' oder 'NULL = NULL'. Nachschlagen Null Vergleiche in SQL, – gmiley