aboutsummaryrefslogtreecommitdiff
path: root/src/test/regress/expected/triggers.out
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/regress/expected/triggers.out')
-rw-r--r--src/test/regress/expected/triggers.out52
1 files changed, 50 insertions, 2 deletions
diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out
index 620fac1e2c5..3ab6be3421c 100644
--- a/src/test/regress/expected/triggers.out
+++ b/src/test/regress/expected/triggers.out
@@ -2217,6 +2217,23 @@ with wcte as (insert into table1 values (42))
insert into table2 values ('hello world');
NOTICE: trigger = table2_trig, new table = ("hello world")
NOTICE: trigger = table1_trig, new table = (42)
+with wcte as (insert into table1 values (43))
+ insert into table1 values (44);
+NOTICE: trigger = table1_trig, new table = (43), (44)
+select * from table1;
+ a
+----
+ 42
+ 44
+ 43
+(3 rows)
+
+select * from table2;
+ a
+-------------
+ hello world
+(1 row)
+
drop table table1;
drop table table2;
--
@@ -2256,6 +2273,14 @@ create trigger my_table_multievent_trig
after insert or update on my_table referencing new table as new_table
for each statement execute procedure dump_insert();
ERROR: transition tables cannot be specified for triggers with more than one event
+--
+-- Verify that you can't create a trigger with transition tables with
+-- a column list.
+--
+create trigger my_table_col_update_trig
+ after update of b on my_table referencing new table as new_table
+ for each statement execute procedure dump_insert();
+ERROR: transition tables cannot be specified for triggers with column lists
drop table my_table;
--
-- Test firing of triggers with transition tables by foreign key cascades
@@ -2299,8 +2324,7 @@ select * from trig_table;
(6 rows)
delete from refd_table where length(b) = 3;
-NOTICE: trigger = trig_table_delete_trig, old table = (2,"two a"), (2,"two b")
-NOTICE: trigger = trig_table_delete_trig, old table = (11,"one a"), (11,"one b")
+NOTICE: trigger = trig_table_delete_trig, old table = (2,"two a"), (2,"two b"), (11,"one a"), (11,"one b")
select * from trig_table;
a | b
---+---------
@@ -2309,6 +2333,30 @@ select * from trig_table;
(2 rows)
drop table refd_table, trig_table;
+--
+-- self-referential FKs are even more fun
+--
+create table self_ref (a int primary key,
+ b int references self_ref(a) on delete cascade);
+create trigger self_ref_r_trig
+ after delete on self_ref referencing old table as old_table
+ for each row execute procedure dump_delete();
+create trigger self_ref_s_trig
+ after delete on self_ref referencing old table as old_table
+ for each statement execute procedure dump_delete();
+insert into self_ref values (1, null), (2, 1), (3, 2);
+delete from self_ref where a = 1;
+NOTICE: trigger = self_ref_r_trig, old table = (1,), (2,1)
+NOTICE: trigger = self_ref_r_trig, old table = (1,), (2,1)
+NOTICE: trigger = self_ref_s_trig, old table = (1,), (2,1)
+NOTICE: trigger = self_ref_r_trig, old table = (3,2)
+NOTICE: trigger = self_ref_s_trig, old table = (3,2)
+-- without AR trigger, cascaded deletes all end up in one transition table
+drop trigger self_ref_r_trig on self_ref;
+insert into self_ref values (1, null), (2, 1), (3, 2), (4, 3);
+delete from self_ref where a = 1;
+NOTICE: trigger = self_ref_s_trig, old table = (1,), (2,1), (3,2), (4,3)
+drop table self_ref;
-- cleanup
drop function dump_insert();
drop function dump_update();