truncate.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. -- Test basic TRUNCATE functionality.
  2. CREATE TABLE truncate_a (col1 integer primary key);
  3. INSERT INTO truncate_a VALUES (1);
  4. INSERT INTO truncate_a VALUES (2);
  5. SELECT * FROM truncate_a;
  6. -- Roll truncate back
  7. BEGIN;
  8. ROLLBACK;
  9. SELECT * FROM truncate_a;
  10. -- Commit the truncate this time
  11. BEGIN;
  12. COMMIT;
  13. CREATE TABLE trunc_c (a serial PRIMARY KEY);
  14. -- Add some data to verify that truncating actually works ...
  15. INSERT INTO trunc_c VALUES (1);
  16. INSERT INTO truncate_a VALUES (1);
  17. -- Add data again to test TRUNCATE ... CASCADE
  18. INSERT INTO trunc_c VALUES (1);
  19. INSERT INTO truncate_a VALUES (1);
  20. -- Test TRUNCATE with inheritance
  21. CREATE TABLE trunc_f (col1 integer primary key);
  22. INSERT INTO trunc_f VALUES (1);
  23. INSERT INTO trunc_f VALUES (2);
  24. BEGIN;
  25. ROLLBACK;
  26. BEGIN;
  27. ROLLBACK;
  28. BEGIN;
  29. ROLLBACK;
  30. BEGIN;
  31. SELECT * FROM trunc_f;
  32. ROLLBACK;
  33. -- Test ON TRUNCATE triggers
  34. CREATE TABLE trunc_trigger_test (f1 int, f2 text, f3 text);
  35. CREATE TABLE trunc_trigger_log (tgop text, tglevel text, tgwhen text,
  36. tgargv text, tgtable name, rowcount bigint);
  37. -- basic before trigger
  38. INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux');
  39. SELECT count(*) as "Row count in test table" FROM trunc_trigger_test;
  40. SELECT * FROM trunc_trigger_log;
  41. -- same test with an after trigger
  42. INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux');
  43. SELECT * FROM trunc_trigger_log;
  44. DROP TABLE trunc_trigger_test;
  45. DROP TABLE trunc_trigger_log;
  46. CREATE TABLE truncate_a (id serial,
  47. id1 integer default nextval('truncate_a_id1'));
  48. -- check rollback of a RESTART IDENTITY operation
  49. BEGIN;
  50. ROLLBACK;
  51. DROP TABLE truncate_a;
  52. SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped
  53. CREATE TABLE truncprim (a int PRIMARY KEY);