Guest User

Untitled

a guest
May 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. DROP TABLE IF EXISTS test CASCADE;
  2. DROP FUNCTION IF EXISTS test2;
  3.  
  4. CREATE TABLE test (
  5. a INTEGER NOT NULL,
  6. b INTEGER NOT NULL
  7. );
  8.  
  9.  
  10. CREATE OR REPLACE FUNCTION test2() RETURNS TRIGGER AS $$
  11. BEGIN
  12. PERFORM test3(new);
  13. END $$ LANGUAGE plpgsql;
  14.  
  15. CREATE TRIGGER test AFTER INSERT OR UPDATE
  16. ON test FOR EACH ROW
  17. EXECUTE PROCEDURE test2();
  18.  
  19.  
  20. CREATE OR REPLACE FUNCTION test3(IN src test) RETURNS VOID AS $$
  21. BEGIN
  22. RAISE EXCEPTION 'expected c to be 1: %',src.c;
  23. END $$ LANGUAGE plpgsql;
  24.  
  25. ALTER TABLE test ADD COLUMN c INTEGER NOT NULL;
  26.  
  27. -- insert in same session yields
  28.  
  29. -- testdb=# INSERT INTO test (a,b,c) VALUES (1,1,1);
  30. -- ERROR: record "src" has no field "c"
  31. INSERT INTO test (a,b,c) VALUES (1,1,1);
  32.  
  33. -- after reconnect to db
  34.  
  35. INSERT INTO test (a,b,c) VALUES (2,2,2);
  36.  
  37. -- testdb=# INSERT INTO test (a,b,c) VALUES (1,1,1);
  38. -- ERROR: expected c to be 1: 2
Add Comment
Please, Sign In to add comment