Ich versuche, diesen Auslöser zu aktivieren. Es wird ausgeführt, bevor Daten aus einer Tabelle und der zugehörigen Tabelle gelöscht werden, und dann werden die gelöschten Daten in 2 Tabellen eingefügt (die ich in tb1_arch und tb2_arch benannt habe). Ich habe gesucht, mögliche Lösungen in Google, aber ich habe wirklich keine Ahnung, wie diese Arbeit machenPLS-00049: Fehlerhafte Bindvariable Auslöser
CREATE OR REPLACE TRIGGER trig
BEFORE DELETE ON tb1 FOR EACH ROW
FETCH
INSERT INTO tb1_arch VALUES (:old.OrderNum, :old.tb1Date,:old.CustomerName);
DBMS_OUTPUT.PUT_LINE('Data archived.');
END;
der Auslöser wurde oben erstellt. aber wenn ich diese Zeile hinzugefügt
INSERT INTO tb2_arch VALUES (:old.OrderNum, :old.ItemNum, :old.Pieces);
nach INSERT INTO tb1_arch VALUES
, es gibt mir einen Fehler
"Fehler in Zeile 5: PLS-00049: schlechte Bind-Variable 'OLD.PIECES'"
Jede Hilfe würde geschätzt werden!
EDIT: als Herr Vijayakumar vorgeschlagen, ich habe folgendes:
CREATE OR REPLACE TRIGGER trig
BEFORE DELETE ON tb1
REFERENCING OLD AS old FOR EACH ROW
INSERT INTO tb1_arch VALUES (:old.OrderNum, :old.tb1Date,:old.CustomerName);
INSERT INTO tb2_arch VALUES (:old.OrderNum, :old.ItemNum, :old.Pieces);
DBMS_OUTPUT.PUT_LINE('Data archived.');
END
Aber ich bin immer noch den gleichen Fehler aufweisen.
EDIT: entfernt FETCH, ich bin der Begegnung noch das gleiche Problem
CREATE OR REPLACE TRIGGER trig
BEFORE DELETE ON tb1 FOR EACH ROW
INSERT INTO tb1_arch VALUES (:old.OrderNum, :old.tb1Date,:old.CustomerName);
INSERT INTO tb2_arch VALUES (:old.OrderNum, :old.ItemNum, :old.Pieces);
DBMS_OUTPUT.PUT_LINE('Data archived.');
END;
Die Tabelle sind wie folgt: tb1:
create table tb1 (
OrderNum integer NOT NULL primary key,
tb1Date date NOT NULL,
CustomerName varchar2(50) NOT NULL,
--constraints
CONSTRAINT tb1_uc unique (CustomerName)
);
TB2
create table tb2 (
OrderNum integer NOT NULL,
ItemNum integer NOT NULL,
Pieces integer NOT NULL,
--constraints
CONSTRAINT tb2_fk foreign key (OrderNum) references tb1(OrderNum),
);
Sie sollten den Verweis 'REFERENCING OLD AS OLD' hinzufügen –
Hallo! Vielen Dank für Ihre Antwort! Ich tat folgendes ERSTELLEN ODER ERSETZEN TRIGGER trig BEVOR LÖSCHEN ON tb_1 REFERENZ ALT AS alt für jede REIHE Allerdings habe ich immer noch den gleichen Fehler! –