index 787af41dfe5b8bdf1c7255ad0e1c191af5cf9a85..d2e333772720eafecdcabd590e1fddc4756b7387 100644 (file)
1 | 499
(1 row)
--- test preventing WHEN conditions from writing to the database
-create or replace function merge_when_and_write() returns boolean
-language plpgsql as
-$$
-BEGIN
- INSERT INTO target VALUES (100, 100);
- RETURN TRUE;
-END;
-$$;
-BEGIN;
-MERGE INTO wq_target t
-USING wq_source s ON t.tid = s.sid
-WHEN MATCHED AND (merge_when_and_write()) THEN
- UPDATE SET balance = t.balance + s.balance;
-ROLLBACK;
-drop function merge_when_and_write();
DROP TABLE wq_target, wq_source;
-- test triggers
create or replace function merge_trigfunc () returns trigger
index 4d486b4433d4d4de710a63d5a63ad458b837a521..e5754f3cd9cd120c99f2adcb40204e3c88c0ff4c 100644 (file)
UPDATE SET balance = t.balance + s.balance;
SELECT * FROM wq_target;
--- test preventing WHEN conditions from writing to the database
-create or replace function merge_when_and_write() returns boolean
-language plpgsql as
-$$
-BEGIN
- INSERT INTO target VALUES (100, 100);
- RETURN TRUE;
-END;
-$$;
-
-BEGIN;
-MERGE INTO wq_target t
-USING wq_source s ON t.tid = s.sid
-WHEN MATCHED AND (merge_when_and_write()) THEN
- UPDATE SET balance = t.balance + s.balance;
-ROLLBACK;
-drop function merge_when_and_write();
-
DROP TABLE wq_target, wq_source;
-- test triggers