triggers.out
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:12k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. QUERY: create table pkeys (pkey1 int4 not null, pkey2 text not null);
  2. QUERY: create table fkeys (fkey1 int4, fkey2 text, fkey3 int);
  3. QUERY: create table fkeys2 (fkey21 int4, fkey22 text, pkey23 int not null);
  4. QUERY: create index fkeys_i on fkeys (fkey1, fkey2);
  5. QUERY: create index fkeys2_i on fkeys2 (fkey21, fkey22);
  6. QUERY: create index fkeys2p_i on fkeys2 (pkey23);
  7. QUERY: insert into pkeys values (10, '1');
  8. QUERY: insert into pkeys values (20, '2');
  9. QUERY: insert into pkeys values (30, '3');
  10. QUERY: insert into pkeys values (40, '4');
  11. QUERY: insert into pkeys values (50, '5');
  12. QUERY: insert into pkeys values (60, '6');
  13. QUERY: create unique index pkeys_i on pkeys (pkey1, pkey2);
  14. QUERY: create trigger check_fkeys_pkey_exist
  15. before insert or update on fkeys
  16. for each row
  17. execute procedure
  18. check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');
  19. QUERY: create trigger check_fkeys_pkey2_exist
  20. before insert or update on fkeys
  21. for each row
  22. execute procedure check_primary_key ('fkey3', 'fkeys2', 'pkey23');
  23. QUERY: create trigger check_fkeys2_pkey_exist
  24. before insert or update on fkeys2
  25. for each row
  26. execute procedure
  27. check_primary_key ('fkey21', 'fkey22', 'pkeys', 'pkey1', 'pkey2');
  28. QUERY: create trigger check_pkeys_fkey_cascade
  29. before delete or update on pkeys
  30. for each row
  31. execute procedure
  32. check_foreign_key (2, 'cascade', 'pkey1', 'pkey2',
  33. 'fkeys', 'fkey1', 'fkey2', 'fkeys2', 'fkey21', 'fkey22');
  34. QUERY: create trigger check_fkeys2_fkey_restrict
  35. before delete or update on fkeys2
  36. for each row
  37. execute procedure check_foreign_key (1, 'restrict', 'pkey23', 'fkeys', 'fkey3');
  38. QUERY: insert into fkeys2 values (10, '1', 1);
  39. QUERY: insert into fkeys2 values (30, '3', 2);
  40. QUERY: insert into fkeys2 values (40, '4', 5);
  41. QUERY: insert into fkeys2 values (50, '5', 3);
  42. QUERY: insert into fkeys2 values (70, '5', 3);
  43. ERROR:  check_fkeys2_pkey_exist: tuple references non-existing key in pkeys
  44. QUERY: insert into fkeys values (10, '1', 2);
  45. QUERY: insert into fkeys values (30, '3', 3);
  46. QUERY: insert into fkeys values (40, '4', 2);
  47. QUERY: insert into fkeys values (50, '5', 2);
  48. QUERY: insert into fkeys values (70, '5', 1);
  49. ERROR:  check_fkeys_pkey_exist: tuple references non-existing key in pkeys
  50. QUERY: insert into fkeys values (60, '6', 4);
  51. ERROR:  check_fkeys_pkey2_exist: tuple references non-existing key in fkeys2
  52. QUERY: delete from pkeys where pkey1 = 30 and pkey2 = '3';
  53. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
  54. ERROR:  check_fkeys2_fkey_restrict: tuple referenced in fkeys
  55. QUERY: delete from pkeys where pkey1 = 40 and pkey2 = '4';
  56. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
  57. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys2 are deleted
  58. QUERY: update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 50 and pkey2 = '5';
  59. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
  60. ERROR:  check_fkeys2_fkey_restrict: tuple referenced in fkeys
  61. QUERY: update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 10 and pkey2 = '1';
  62. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys are deleted
  63. NOTICE:  check_pkeys_fkey_cascade: 1 tuple(s) of fkeys2 are deleted
  64. QUERY: DROP TABLE pkeys;
  65. QUERY: DROP TABLE fkeys;
  66. QUERY: DROP TABLE fkeys2;
  67. QUERY: create table dup17 (x int4);
  68. QUERY: create trigger dup17_before
  69. before insert on dup17
  70. for each row
  71. execute procedure
  72. funny_dup17 ()
  73. ;
  74. QUERY: insert into dup17 values (17);
  75. NOTICE:  funny_dup17 (fired BEFORE) on level   1: 0/0 tuples inserted/selected
  76. QUERY: select count(*) from dup17;
  77. count
  78. -----
  79.     1
  80. (1 row)
  81. QUERY: insert into dup17 values (17);
  82. NOTICE:  funny_dup17 (fired BEFORE) on level  17: 1/2 tuples inserted/selected
  83. NOTICE:  funny_dup17 (fired BEFORE) on level  16: 1/3 tuples inserted/selected
  84. NOTICE:  funny_dup17 (fired BEFORE) on level  15: 1/4 tuples inserted/selected
  85. NOTICE:  funny_dup17 (fired BEFORE) on level  14: 1/5 tuples inserted/selected
  86. NOTICE:  funny_dup17 (fired BEFORE) on level  13: 1/6 tuples inserted/selected
  87. NOTICE:  funny_dup17 (fired BEFORE) on level  12: 1/7 tuples inserted/selected
  88. NOTICE:  funny_dup17 (fired BEFORE) on level  11: 1/8 tuples inserted/selected
  89. NOTICE:  funny_dup17 (fired BEFORE) on level  10: 1/9 tuples inserted/selected
  90. NOTICE:  funny_dup17 (fired BEFORE) on level   9: 1/10 tuples inserted/selected
  91. NOTICE:  funny_dup17 (fired BEFORE) on level   8: 1/11 tuples inserted/selected
  92. NOTICE:  funny_dup17 (fired BEFORE) on level   7: 1/12 tuples inserted/selected
  93. NOTICE:  funny_dup17 (fired BEFORE) on level   6: 1/13 tuples inserted/selected
  94. NOTICE:  funny_dup17 (fired BEFORE) on level   5: 1/14 tuples inserted/selected
  95. NOTICE:  funny_dup17 (fired BEFORE) on level   4: 1/15 tuples inserted/selected
  96. NOTICE:  funny_dup17 (fired BEFORE) on level   3: 1/16 tuples inserted/selected
  97. NOTICE:  funny_dup17 (fired BEFORE) on level   2: 1/17 tuples inserted/selected
  98. NOTICE:  funny_dup17 (fired BEFORE) on level   1: 1/18 tuples inserted/selected
  99. QUERY: select count(*) from dup17;
  100. count
  101. -----
  102.    19
  103. (1 row)
  104. QUERY: drop trigger dup17_before on dup17;
  105. QUERY: create trigger dup17_after
  106. after insert on dup17
  107. for each row
  108. execute procedure
  109. funny_dup17 ()
  110. ;
  111. QUERY: insert into dup17 values (13);
  112. NOTICE:  funny_dup17 (fired AFTER ) on level  17: 17/34 tuples inserted/selected
  113. NOTICE:  funny_dup17 (fired AFTER ) on level  16: 16/49 tuples inserted/selected
  114. NOTICE:  funny_dup17 (fired AFTER ) on level  15: 15/63 tuples inserted/selected
  115. NOTICE:  funny_dup17 (fired AFTER ) on level  14: 14/76 tuples inserted/selected
  116. NOTICE:  funny_dup17 (fired AFTER ) on level  13: 13/88 tuples inserted/selected
  117. NOTICE:  funny_dup17 (fired AFTER ) on level  12: 12/99 tuples inserted/selected
  118. NOTICE:  funny_dup17 (fired AFTER ) on level  11: 11/109 tuples inserted/selected
  119. NOTICE:  funny_dup17 (fired AFTER ) on level  10: 10/118 tuples inserted/selected
  120. NOTICE:  funny_dup17 (fired AFTER ) on level   9: 9/126 tuples inserted/selected
  121. NOTICE:  funny_dup17 (fired AFTER ) on level   8: 8/133 tuples inserted/selected
  122. NOTICE:  funny_dup17 (fired AFTER ) on level   7: 7/139 tuples inserted/selected
  123. NOTICE:  funny_dup17 (fired AFTER ) on level   6: 6/144 tuples inserted/selected
  124. NOTICE:  funny_dup17 (fired AFTER ) on level   5: 5/148 tuples inserted/selected
  125. NOTICE:  funny_dup17 (fired AFTER ) on level   4: 4/151 tuples inserted/selected
  126. NOTICE:  funny_dup17 (fired AFTER ) on level   3: 3/153 tuples inserted/selected
  127. NOTICE:  funny_dup17 (fired AFTER ) on level   2: 2/154 tuples inserted/selected
  128. NOTICE:  funny_dup17 (fired AFTER ) on level   1: 1/154 tuples inserted/selected
  129. QUERY: select count(*) from dup17 where x = 13;
  130. count
  131. -----
  132.   154
  133. (1 row)
  134. QUERY: insert into dup17 values (13);
  135. NOTICE:  funny_dup17 (fired AFTER ) on level  17: 171/342 tuples inserted/selected
  136. NOTICE:  funny_dup17 (fired AFTER ) on level  16: 170/511 tuples inserted/selected
  137. NOTICE:  funny_dup17 (fired AFTER ) on level  15: 169/679 tuples inserted/selected
  138. NOTICE:  funny_dup17 (fired AFTER ) on level  14: 168/846 tuples inserted/selected
  139. NOTICE:  funny_dup17 (fired AFTER ) on level  13: 167/1012 tuples inserted/selected
  140. NOTICE:  funny_dup17 (fired AFTER ) on level  12: 166/1177 tuples inserted/selected
  141. NOTICE:  funny_dup17 (fired AFTER ) on level  11: 165/1341 tuples inserted/selected
  142. NOTICE:  funny_dup17 (fired AFTER ) on level  10: 164/1504 tuples inserted/selected
  143. NOTICE:  funny_dup17 (fired AFTER ) on level   9: 163/1666 tuples inserted/selected
  144. NOTICE:  funny_dup17 (fired AFTER ) on level   8: 162/1827 tuples inserted/selected
  145. NOTICE:  funny_dup17 (fired AFTER ) on level   7: 161/1987 tuples inserted/selected
  146. NOTICE:  funny_dup17 (fired AFTER ) on level   6: 160/2146 tuples inserted/selected
  147. NOTICE:  funny_dup17 (fired AFTER ) on level   5: 159/2304 tuples inserted/selected
  148. NOTICE:  funny_dup17 (fired AFTER ) on level   4: 158/2461 tuples inserted/selected
  149. NOTICE:  funny_dup17 (fired AFTER ) on level   3: 157/2617 tuples inserted/selected
  150. NOTICE:  funny_dup17 (fired AFTER ) on level   2: 156/2772 tuples inserted/selected
  151. NOTICE:  funny_dup17 (fired AFTER ) on level   1: 155/2926 tuples inserted/selected
  152. QUERY: select count(*) from dup17 where x = 13;
  153. count
  154. -----
  155.  2926
  156. (1 row)
  157. QUERY: DROP TABLE dup17;
  158. QUERY: create sequence ttdummy_seq increment 10 start 0 minvalue 0;
  159. QUERY: create table tttest (
  160. price_id int4,
  161. price_val int4,
  162. price_on int4,
  163. price_off int4 default 999999
  164. );
  165. QUERY: create trigger ttdummy
  166. before delete or update on tttest
  167. for each row
  168. execute procedure
  169. ttdummy (price_on, price_off);
  170. QUERY: create trigger ttserial
  171. before insert or update on tttest
  172. for each row
  173. execute procedure
  174. autoinc (price_on, ttdummy_seq);
  175. QUERY: insert into tttest values (1, 1, null);
  176. QUERY: insert into tttest values (2, 2, null);
  177. QUERY: insert into tttest values (3, 3, 0);
  178. QUERY: select * from tttest;
  179. price_id|price_val|price_on|price_off
  180. --------+---------+--------+---------
  181.        1|        1|      10|   999999
  182.        2|        2|      20|   999999
  183.        3|        3|      30|   999999
  184. (3 rows)
  185. QUERY: delete from tttest where price_id = 2;
  186. QUERY: select * from tttest;
  187. price_id|price_val|price_on|price_off
  188. --------+---------+--------+---------
  189.        1|        1|      10|   999999
  190.        3|        3|      30|   999999
  191.        2|        2|      20|       40
  192. (3 rows)
  193. QUERY: select * from tttest where price_off = 999999;
  194. price_id|price_val|price_on|price_off
  195. --------+---------+--------+---------
  196.        1|        1|      10|   999999
  197.        3|        3|      30|   999999
  198. (2 rows)
  199. QUERY: update tttest set price_val = 30 where price_id = 3;
  200. QUERY: select * from tttest;
  201. price_id|price_val|price_on|price_off
  202. --------+---------+--------+---------
  203.        1|        1|      10|   999999
  204.        2|        2|      20|       40
  205.        3|       30|      50|   999999
  206.        3|        3|      30|       50
  207. (4 rows)
  208. QUERY: update tttest set price_id = 5 where price_id = 3;
  209. QUERY: select * from tttest;
  210. price_id|price_val|price_on|price_off
  211. --------+---------+--------+---------
  212.        1|        1|      10|   999999
  213.        2|        2|      20|       40
  214.        3|        3|      30|       50
  215.        5|       30|      60|   999999
  216.        3|       30|      50|       60
  217. (5 rows)
  218. QUERY: select set_ttdummy(0);
  219. set_ttdummy
  220. -----------
  221.           1
  222. (1 row)
  223. QUERY: delete from tttest where price_id = 5;
  224. QUERY: update tttest set price_off = 999999 where price_val = 30;
  225. QUERY: select * from tttest;
  226. price_id|price_val|price_on|price_off
  227. --------+---------+--------+---------
  228.        1|        1|      10|   999999
  229.        2|        2|      20|       40
  230.        3|        3|      30|       50
  231.        3|       30|      50|   999999
  232. (4 rows)
  233. QUERY: update tttest set price_id = 5 where price_id = 3;
  234. QUERY: select * from tttest;
  235. price_id|price_val|price_on|price_off
  236. --------+---------+--------+---------
  237.        1|        1|      10|   999999
  238.        2|        2|      20|       40
  239.        5|        3|      30|       50
  240.        5|       30|      50|   999999
  241. (4 rows)
  242. QUERY: select set_ttdummy(1);
  243. set_ttdummy
  244. -----------
  245.           0
  246. (1 row)
  247. QUERY: update tttest set price_on = -1 where price_id = 1;
  248. ERROR:  ttdummy (tttest): you can't change price_on and/or price_off columns (use set_ttdummy)
  249. QUERY: select set_ttdummy(0);
  250. set_ttdummy
  251. -----------
  252.           1
  253. (1 row)
  254. QUERY: update tttest set price_on = -1 where price_id = 1;
  255. QUERY: select * from tttest;
  256. price_id|price_val|price_on|price_off
  257. --------+---------+--------+---------
  258.        2|        2|      20|       40
  259.        5|        3|      30|       50
  260.        5|       30|      50|   999999
  261.        1|        1|      -1|   999999
  262. (4 rows)
  263. QUERY: select * from tttest where price_on <= 35 and price_off > 35 and price_id = 5;
  264. price_id|price_val|price_on|price_off
  265. --------+---------+--------+---------
  266.        5|        3|      30|       50
  267. (1 row)
  268. QUERY: drop table tttest;
  269. QUERY: drop sequence ttdummy_seq;