I have a task in school which requires me to create a table and a trigger. I don’t really know how to explain it but how can I check if cID is inside the select statement within the trigger function ? Basically my goal is to only allow cID values which are not inside of “SELECT * from Example2 natural join Example3”. Can anyone help me with that? Thank you.
x
CREATE TABLE Example(
cID INTEGER REFERENCES Example2(attr),
level INTEGER CHECK (level BETWEEN 1 AND 10));
CREATE FUNCTION exp() RETURNS TRIGGER AS
$$
BEGIN
IF EXISTS (select * from Example2 natural join Example3) THEN
RAISE EXCEPTION '...';
END IF;
return null;
END; $$ language plpgsql;
CREATE CONSTRAINT TRIGGER trg
AFTER INSERT OR UPDATE ON Example
FOR EACH ROW
EXECUTE PROCEDURE exp();
Advertisement
Answer
CREATE FUNCTION exp() RETURNS TRIGGER AS $$ BEGIN IF EXISTS (select 1 from Example2 a where a.cID = new.cID ) THEN RAISE EXCEPTION '...'; END IF; return RETURN NEW; END; $$ language plpgsql;