Reputation: 83
I created a Trigger on Update which should insert in my table preishist.
//preishist
CREATE TABLE preishist (
updatenr varchar(4),
preis numeric(8,2),
pnr varchar(4),
gueltigab date,
PRIMARY KEY(updatenr));
//produkt
CREATE TABLE produkt(
pnr varchar(4),
name varchar(4),
preis numeric(8,2),
gultigab date,
PRIMARY KEY(pnr));
//Trigger
CREATE TRIGGER trigger AFTER UPDATE ON produkt FOR EACH STATEMENT EXECUTE
PROCEDURE triggerfunc();
//Triggerfunc
CREATE FUNCTION triggerfunc RETURNS TRIGGER AS '
begin
IF TG_OP = 'UPDATE' THEN
IF OLD.preis <> NEW.preis AND OLD.gueltigab < NEW.gueltigab THEN
INSERT INTO preishist (preis,pnr,gultigab) VALUES (NEW.preis, NEW.pnr,NEW.gueltigab);
end IF;
end IF;
end;
When I try to update produkt I get the error message
Record old is not assigned yet.
I'm happy for all help.
Upvotes: 1
Views: 334
Reputation:
OLD
and NEW
are only available in row level trigger. You defined your trigger as a statement level trigger.
To be able to use OLD
and NEW
use:
CREATE TRIGGER trigger
AFTER UPDATE ON produkt
FOR EACH ROW --<< here
EXECUTE PROCEDURE triggerfunc();
Upvotes: 3