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

数据库系统

开发平台:

Unix_Linux

  1. --
  2. -- First we build the house - so we create the rooms
  3. --
  4. insert into Room values ('001', 'Entrance');
  5. insert into Room values ('002', 'Office');
  6. insert into Room values ('003', 'Office');
  7. insert into Room values ('004', 'Technical');
  8. insert into Room values ('101', 'Office');
  9. insert into Room values ('102', 'Conference');
  10. insert into Room values ('103', 'Restroom');
  11. insert into Room values ('104', 'Technical');
  12. insert into Room values ('105', 'Office');
  13. insert into Room values ('106', 'Office');
  14. --
  15. -- Second we install the wall connectors
  16. --
  17. insert into WSlot values ('WS.001.1a', '001', '', '');
  18. insert into WSlot values ('WS.001.1b', '001', '', '');
  19. insert into WSlot values ('WS.001.2a', '001', '', '');
  20. insert into WSlot values ('WS.001.2b', '001', '', '');
  21. insert into WSlot values ('WS.001.3a', '001', '', '');
  22. insert into WSlot values ('WS.001.3b', '001', '', '');
  23. insert into WSlot values ('WS.002.1a', '002', '', '');
  24. insert into WSlot values ('WS.002.1b', '002', '', '');
  25. insert into WSlot values ('WS.002.2a', '002', '', '');
  26. insert into WSlot values ('WS.002.2b', '002', '', '');
  27. insert into WSlot values ('WS.002.3a', '002', '', '');
  28. insert into WSlot values ('WS.002.3b', '002', '', '');
  29. insert into WSlot values ('WS.003.1a', '003', '', '');
  30. insert into WSlot values ('WS.003.1b', '003', '', '');
  31. insert into WSlot values ('WS.003.2a', '003', '', '');
  32. insert into WSlot values ('WS.003.2b', '003', '', '');
  33. insert into WSlot values ('WS.003.3a', '003', '', '');
  34. insert into WSlot values ('WS.003.3b', '003', '', '');
  35. insert into WSlot values ('WS.101.1a', '101', '', '');
  36. insert into WSlot values ('WS.101.1b', '101', '', '');
  37. insert into WSlot values ('WS.101.2a', '101', '', '');
  38. insert into WSlot values ('WS.101.2b', '101', '', '');
  39. insert into WSlot values ('WS.101.3a', '101', '', '');
  40. insert into WSlot values ('WS.101.3b', '101', '', '');
  41. insert into WSlot values ('WS.102.1a', '102', '', '');
  42. insert into WSlot values ('WS.102.1b', '102', '', '');
  43. insert into WSlot values ('WS.102.2a', '102', '', '');
  44. insert into WSlot values ('WS.102.2b', '102', '', '');
  45. insert into WSlot values ('WS.102.3a', '102', '', '');
  46. insert into WSlot values ('WS.102.3b', '102', '', '');
  47. insert into WSlot values ('WS.105.1a', '105', '', '');
  48. insert into WSlot values ('WS.105.1b', '105', '', '');
  49. insert into WSlot values ('WS.105.2a', '105', '', '');
  50. insert into WSlot values ('WS.105.2b', '105', '', '');
  51. insert into WSlot values ('WS.105.3a', '105', '', '');
  52. insert into WSlot values ('WS.105.3b', '105', '', '');
  53. insert into WSlot values ('WS.106.1a', '106', '', '');
  54. insert into WSlot values ('WS.106.1b', '106', '', '');
  55. insert into WSlot values ('WS.106.2a', '106', '', '');
  56. insert into WSlot values ('WS.106.2b', '106', '', '');
  57. insert into WSlot values ('WS.106.3a', '106', '', '');
  58. insert into WSlot values ('WS.106.3b', '106', '', '');
  59. --
  60. -- Now create the patch fields and their slots
  61. --
  62. insert into PField values ('PF0_1', 'Wallslots basement');
  63. --
  64. -- The cables for these will be made later, so they are unconnected for now
  65. --
  66. insert into PSlot values ('PS.base.a1', 'PF0_1', '', '');
  67. insert into PSlot values ('PS.base.a2', 'PF0_1', '', '');
  68. insert into PSlot values ('PS.base.a3', 'PF0_1', '', '');
  69. insert into PSlot values ('PS.base.a4', 'PF0_1', '', '');
  70. insert into PSlot values ('PS.base.a5', 'PF0_1', '', '');
  71. insert into PSlot values ('PS.base.a6', 'PF0_1', '', '');
  72. --
  73. -- These are already wired to the wall connectors
  74. --
  75. insert into PSlot values ('PS.base.b1', 'PF0_1', '', 'WS.002.1a');
  76. insert into PSlot values ('PS.base.b2', 'PF0_1', '', 'WS.002.1b');
  77. insert into PSlot values ('PS.base.b3', 'PF0_1', '', 'WS.002.2a');
  78. insert into PSlot values ('PS.base.b4', 'PF0_1', '', 'WS.002.2b');
  79. insert into PSlot values ('PS.base.b5', 'PF0_1', '', 'WS.002.3a');
  80. insert into PSlot values ('PS.base.b6', 'PF0_1', '', 'WS.002.3b');
  81. insert into PSlot values ('PS.base.c1', 'PF0_1', '', 'WS.003.1a');
  82. insert into PSlot values ('PS.base.c2', 'PF0_1', '', 'WS.003.1b');
  83. insert into PSlot values ('PS.base.c3', 'PF0_1', '', 'WS.003.2a');
  84. insert into PSlot values ('PS.base.c4', 'PF0_1', '', 'WS.003.2b');
  85. insert into PSlot values ('PS.base.c5', 'PF0_1', '', 'WS.003.3a');
  86. insert into PSlot values ('PS.base.c6', 'PF0_1', '', 'WS.003.3b');
  87. --
  88. -- This patchfield will be renamed later into PF0_2 - so its
  89. -- slots references in pfname should follow
  90. --
  91. insert into PField values ('PF0_X', 'Phonelines basement');
  92. insert into PSlot values ('PS.base.ta1', 'PF0_X', '', '');
  93. insert into PSlot values ('PS.base.ta2', 'PF0_X', '', '');
  94. insert into PSlot values ('PS.base.ta3', 'PF0_X', '', '');
  95. insert into PSlot values ('PS.base.ta4', 'PF0_X', '', '');
  96. insert into PSlot values ('PS.base.ta5', 'PF0_X', '', '');
  97. insert into PSlot values ('PS.base.ta6', 'PF0_X', '', '');
  98. insert into PSlot values ('PS.base.tb1', 'PF0_X', '', '');
  99. insert into PSlot values ('PS.base.tb2', 'PF0_X', '', '');
  100. insert into PSlot values ('PS.base.tb3', 'PF0_X', '', '');
  101. insert into PSlot values ('PS.base.tb4', 'PF0_X', '', '');
  102. insert into PSlot values ('PS.base.tb5', 'PF0_X', '', '');
  103. insert into PSlot values ('PS.base.tb6', 'PF0_X', '', '');
  104. insert into PField values ('PF1_1', 'Wallslots 1st floor');
  105. insert into PSlot values ('PS.1st.a1', 'PF1_1', '', 'WS.101.1a');
  106. insert into PSlot values ('PS.1st.a2', 'PF1_1', '', 'WS.101.1b');
  107. insert into PSlot values ('PS.1st.a3', 'PF1_1', '', 'WS.101.2a');
  108. insert into PSlot values ('PS.1st.a4', 'PF1_1', '', 'WS.101.2b');
  109. insert into PSlot values ('PS.1st.a5', 'PF1_1', '', 'WS.101.3a');
  110. insert into PSlot values ('PS.1st.a6', 'PF1_1', '', 'WS.101.3b');
  111. insert into PSlot values ('PS.1st.b1', 'PF1_1', '', 'WS.102.1a');
  112. insert into PSlot values ('PS.1st.b2', 'PF1_1', '', 'WS.102.1b');
  113. insert into PSlot values ('PS.1st.b3', 'PF1_1', '', 'WS.102.2a');
  114. insert into PSlot values ('PS.1st.b4', 'PF1_1', '', 'WS.102.2b');
  115. insert into PSlot values ('PS.1st.b5', 'PF1_1', '', 'WS.102.3a');
  116. insert into PSlot values ('PS.1st.b6', 'PF1_1', '', 'WS.102.3b');
  117. insert into PSlot values ('PS.1st.c1', 'PF1_1', '', 'WS.105.1a');
  118. insert into PSlot values ('PS.1st.c2', 'PF1_1', '', 'WS.105.1b');
  119. insert into PSlot values ('PS.1st.c3', 'PF1_1', '', 'WS.105.2a');
  120. insert into PSlot values ('PS.1st.c4', 'PF1_1', '', 'WS.105.2b');
  121. insert into PSlot values ('PS.1st.c5', 'PF1_1', '', 'WS.105.3a');
  122. insert into PSlot values ('PS.1st.c6', 'PF1_1', '', 'WS.105.3b');
  123. insert into PSlot values ('PS.1st.d1', 'PF1_1', '', 'WS.106.1a');
  124. insert into PSlot values ('PS.1st.d2', 'PF1_1', '', 'WS.106.1b');
  125. insert into PSlot values ('PS.1st.d3', 'PF1_1', '', 'WS.106.2a');
  126. insert into PSlot values ('PS.1st.d4', 'PF1_1', '', 'WS.106.2b');
  127. insert into PSlot values ('PS.1st.d5', 'PF1_1', '', 'WS.106.3a');
  128. insert into PSlot values ('PS.1st.d6', 'PF1_1', '', 'WS.106.3b');
  129. --
  130. -- Now we wire the wall connectors 1a-2a in room 001 to the
  131. -- patchfield. In the second update we make an error, and
  132. -- correct it after
  133. --
  134. update PSlot set backlink = 'WS.001.1a' where slotname = 'PS.base.a1';
  135. update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a3';
  136. select * from WSlot where roomno = '001' order by slotname;
  137. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  138. update PSlot set backlink = 'WS.001.2a' where slotname = 'PS.base.a3';
  139. select * from WSlot where roomno = '001' order by slotname;
  140. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  141. update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a2';
  142. select * from WSlot where roomno = '001' order by slotname;
  143. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  144. --
  145. -- Same procedure for 2b-3b but this time updating the WSlot instead
  146. -- of the PSlot. Due to the triggers the result is the same:
  147. -- WSlot and corresponding PSlot point to each other.
  148. --
  149. update WSlot set backlink = 'PS.base.a4' where slotname = 'WS.001.2b';
  150. update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3a';
  151. select * from WSlot where roomno = '001' order by slotname;
  152. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  153. update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3b';
  154. select * from WSlot where roomno = '001' order by slotname;
  155. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  156. update WSlot set backlink = 'PS.base.a5' where slotname = 'WS.001.3a';
  157. select * from WSlot where roomno = '001' order by slotname;
  158. select * from PSlot where slotname ~ 'PS.base.a' order by slotname;
  159. insert into PField values ('PF1_2', 'Phonelines 1st floor');
  160. insert into PSlot values ('PS.1st.ta1', 'PF1_2', '', '');
  161. insert into PSlot values ('PS.1st.ta2', 'PF1_2', '', '');
  162. insert into PSlot values ('PS.1st.ta3', 'PF1_2', '', '');
  163. insert into PSlot values ('PS.1st.ta4', 'PF1_2', '', '');
  164. insert into PSlot values ('PS.1st.ta5', 'PF1_2', '', '');
  165. insert into PSlot values ('PS.1st.ta6', 'PF1_2', '', '');
  166. insert into PSlot values ('PS.1st.tb1', 'PF1_2', '', '');
  167. insert into PSlot values ('PS.1st.tb2', 'PF1_2', '', '');
  168. insert into PSlot values ('PS.1st.tb3', 'PF1_2', '', '');
  169. insert into PSlot values ('PS.1st.tb4', 'PF1_2', '', '');
  170. insert into PSlot values ('PS.1st.tb5', 'PF1_2', '', '');
  171. insert into PSlot values ('PS.1st.tb6', 'PF1_2', '', '');
  172. --
  173. -- Fix the wrong name for patchfield PF0_2
  174. --
  175. update PField set name = 'PF0_2' where name = 'PF0_X';
  176. select * from PSlot order by slotname;
  177. select * from WSlot order by slotname;
  178. --
  179. -- Install the central phone system and create the phone numbers.
  180. -- They are weired on insert to the patchfields. Again the
  181. -- triggers automatically tell the PSlots to update their
  182. -- backlink field.
  183. --
  184. insert into PLine values ('PL.001', '-0', 'Central call', 'PS.base.ta1');
  185. insert into PLine values ('PL.002', '-101', '', 'PS.base.ta2');
  186. insert into PLine values ('PL.003', '-102', '', 'PS.base.ta3');
  187. insert into PLine values ('PL.004', '-103', '', 'PS.base.ta5');
  188. insert into PLine values ('PL.005', '-104', '', 'PS.base.ta6');
  189. insert into PLine values ('PL.006', '-106', '', 'PS.base.tb2');
  190. insert into PLine values ('PL.007', '-108', '', 'PS.base.tb3');
  191. insert into PLine values ('PL.008', '-109', '', 'PS.base.tb4');
  192. insert into PLine values ('PL.009', '-121', '', 'PS.base.tb5');
  193. insert into PLine values ('PL.010', '-122', '', 'PS.base.tb6');
  194. insert into PLine values ('PL.015', '-134', '', 'PS.1st.ta1');
  195. insert into PLine values ('PL.016', '-137', '', 'PS.1st.ta3');
  196. insert into PLine values ('PL.017', '-139', '', 'PS.1st.ta4');
  197. insert into PLine values ('PL.018', '-362', '', 'PS.1st.tb1');
  198. insert into PLine values ('PL.019', '-363', '', 'PS.1st.tb2');
  199. insert into PLine values ('PL.020', '-364', '', 'PS.1st.tb3');
  200. insert into PLine values ('PL.021', '-365', '', 'PS.1st.tb5');
  201. insert into PLine values ('PL.022', '-367', '', 'PS.1st.tb6');
  202. insert into PLine values ('PL.028', '-501', 'Fax entrance', 'PS.base.ta2');
  203. insert into PLine values ('PL.029', '-502', 'Fax 1st floor', 'PS.1st.ta1');
  204. --
  205. -- Buy some phones, plug them into the wall and patch the
  206. -- phone lines to the corresponding patchfield slots.
  207. --
  208. insert into PHone values ('PH.hc001', 'Hicom standard', 'WS.001.1a');
  209. update PSlot set slotlink = 'PS.base.ta1' where slotname = 'PS.base.a1';
  210. insert into PHone values ('PH.hc002', 'Hicom standard', 'WS.002.1a');
  211. update PSlot set slotlink = 'PS.base.ta5' where slotname = 'PS.base.b1';
  212. insert into PHone values ('PH.hc003', 'Hicom standard', 'WS.002.2a');
  213. update PSlot set slotlink = 'PS.base.tb2' where slotname = 'PS.base.b3';
  214. insert into PHone values ('PH.fax001', 'Canon fax', 'WS.001.2a');
  215. update PSlot set slotlink = 'PS.base.ta2' where slotname = 'PS.base.a3';
  216. --
  217. -- Install a hub at one of the patchfields, plug a computers
  218. -- ethernet interface into the wall and patch it to the hub.
  219. --
  220. insert into Hub values ('base.hub1', 'Patchfield PF0_1 hub', 16);
  221. insert into System values ('orion', 'PC');
  222. insert into IFace values ('IF', 'orion', 'eth0', 'WS.002.1b');
  223. update PSlot set slotlink = 'HS.base.hub1.1' where slotname = 'PS.base.b2';
  224. --
  225. -- Now we take a look at the patchfield
  226. --
  227. select * from PField_v1 where pfname = 'PF0_1' order by slotname;
  228. select * from PField_v1 where pfname = 'PF0_2' order by slotname;
  229. --
  230. -- Finally we want errors
  231. --
  232. insert into PField values ('PF1_1', 'should fail due to unique index');
  233. update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1';
  234. update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1';
  235. update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1';
  236. update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1';
  237. insert into HSlot values ('HS', 'base.hub1', 1, '');
  238. insert into HSlot values ('HS', 'base.hub1', 20, '');
  239. delete from HSlot;
  240. insert into IFace values ('IF', 'notthere', 'eth0', '');
  241. insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', '');