Closed albrov closed 1 year ago
Although the PG docs have a couple of examples of CREATE TRIGGER ... REFERENCING
, it would be helpful if you could also provide a couple of examples of the setup needed to invoke such a statement, so that they can be used in tests for covering the feature. They don't need to be too complex or use realistic names, just the basic CREATE TABLE/FUNCTIONs needed. Thanks.
I forgot about the example.....
CREATE FUNCTION public.test_tr_insert()
RETURNS trigger
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
qnt int;
BEGIN
SELECT count(*) INTO qnt FROM inserted;
RAISE NOTICE 'qnt = %', qnt;
RETURN NULL;
END;
$BODY$;
CREATE FUNCTION public.test_tr_delete()
RETURNS trigger
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
qnt int;
BEGIN
SELECT count(*) INTO qnt FROM deleted;
RAISE NOTICE 'qnt = %', qnt;
RETURN NULL;
END;
$BODY$;
CREATE TABLE test(c1 character varying(20))
CREATE TRIGGER test_tr_insert
AFTER INSERT
ON public.test
REFERENCING NEW TABLE AS inserted
FOR EACH STATEMENT
EXECUTE FUNCTION public.test_tr_insert();
CREATE TRIGGER test_tr_delete
AFTER DELETE
ON public.test
REFERENCING OLD TABLE AS deleted
FOR EACH STATEMENT
EXECUTE FUNCTION public.test_tr_delete();
REFERENCING can contain both tables
......
REFERENCING NEW TABLE AS inserted OLD TABLE AS deleted
......
launch
insert into test(c1) VALUES('q'), ('w'), ('e');
result:
NOTICE: qnt = 3
INSERT 0 3
delete from test where c1 = 'q' OR c1 = 'w'
result:
NOTICE: qnt = 2
DELETE 2
yaml for table my implementation
table test:
columns:
- c1:
statistics: 0
type: character varying(20)
owner: dmfms
triggers:
test_tr_delete:
events:
- delete
level: statement
procedure: public.test_tr_delete
ref_old_table: deleted
timing: after
test_tr_insert:
events:
- insert
level: statement
procedure: public.test_tr_insert
ref_new_table: inserted
timing: after
Fixed by 3a385ba. Adapted mostly from your code above, but using more synthetic tests.
Hi. Postgres has a construct in the trigger creation syntax:
but there is no implementation in the library. In the project, we often use this functionality. Please add implementation to the library Мy version of implementation