prestige

labtrigger_BD

May 16th, 2012
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 8.30 KB | None | 0 0
  1. GO
  2. USE master
  3. GO
  4. IF EXISTS (SELECT * from sys.databases where name='mybase')
  5.         DROP DATABASE mybase
  6. GO
  7. CREATE DATABASE mybase
  8. GO
  9. ALTER DATABASE mybase SET MULTI_USER
  10. GO
  11. USE mybase
  12. GO
  13. CREATE TABLE Street
  14. (StreetId int NOT NULL PRIMARY KEY,
  15. Name nvarchar(25) NOT NULL)
  16. GO
  17. INSERT INTO Street(StreetId,Name)
  18.                  VALUES (1,'Пушкинская')
  19. INSERT INTO Street(StreetId,Name)
  20.                  VALUES (2,'Лермонтовская')
  21. INSERT INTO Street(StreetId,Name)
  22.                  VALUES (3,'Чуковская')
  23. INSERT INTO Street(StreetId,Name)
  24.                  VALUES (4,'Толкиенская')
  25. GO
  26. --SELECT * FROM Street
  27. --GO
  28. CREATE TABLE Fam
  29. (FamId int NOT NULL PRIMARY KEY,
  30. Name nvarchar(25) NOT NULL)
  31. GO
  32. INSERT INTO Fam(FamId,Name)
  33.          VALUES (1,'Яблочных')
  34. INSERT INTO Fam(FamId,Name)
  35.          VALUES (2,'Апельсинов')
  36. INSERT INTO Fam(FamId,Name)
  37.          VALUES (3,'Виноградов')
  38. INSERT INTO Fam(FamId,Name)
  39.          VALUES (4,'Грушев')
  40. INSERT INTO Fam(FamId,Name)
  41.          VALUES (5,'Арбузова')
  42. GO
  43. --SELECT * FROM Fam
  44. --GO
  45. CREATE TABLE Subscriber
  46. (SubscriberId int NOT NULL Primary Key,
  47. PhoneNumber nvarchar(9) NOT NULL
  48. check(PhoneNumber like'[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'or PhoneNumber like'[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'),
  49. FamId int NOT NULL,
  50. Iniz nvarchar(4) NOT NULL,
  51. Indeks nvarchar(5) NOT NULL,
  52. StreetId int NOT NULL,
  53. HouseNumber int NOT NULL,
  54. FlatNumber int NOT NULL,
  55. Sex nvarchar(1) NOT NULL,
  56. FOREIGN KEY (FamId) REFERENCES Fam(FamId),
  57. FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  58. GO
  59. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  60.          VALUES (1,'745-34-19',1, 'А.А.','61005',2, 13,3,'М')
  61. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  62.          VALUES (2,'234-43-53',2, 'Р.В', '61005', 1,1,45,'М')
  63. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  64.          VALUES (3,'654-02-51',3, 'В.И.','61005', 3,11,2,'Ж')
  65. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  66.          VALUES (4,'350-10-20',4, 'Ф.И.', '61005', 4, 7,223,'М')
  67. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  68.          VALUES (5,'787-34-66',1, 'А.С.', '61005', 3,13,89,'Ж')
  69. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  70.          VALUES (6,'787-37-56',2, 'А.С.', '61005', 2,112,13,'М')
  71. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  72.          VALUES (7,'777-34-66',2, 'К.В.', '61005', 1,2,13,'М')
  73. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  74.          VALUES (8,'787-34-12',4, 'М.С.', '61005', 2,112,13,'Ж')
  75. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  76.          VALUES (9,'49-72-34',4, 'К.М.', '61005', 4,132,13,'М')
  77. INSERT INTO Subscriber(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  78.          VALUES (10,'49-72-34',5, 'К.М.', '61005', 4,132,13,'М')
  79. GO
  80. --SELECT *
  81. --FROM Subscriber
  82. --GO
  83.  
  84. --CREATE TABLE SubscriberCopy
  85. --(SubscriberId int NOT NULL Primary Key,
  86. --PhoneNumber nvarchar(9) NOT NULL,
  87. --FamId int NOT NULL,
  88. --Iniz nvarchar(4) NOT NULL,
  89. --Indeks nvarchar(5) NOT NULL,
  90. --StreetId int NOT NULL,
  91. --HouseNumber int NOT NULL,
  92. --FlatNumber int NOT NULL,
  93. --Sex nvarchar(1) NOT NULL,
  94. --FOREIGN KEY (FamID) REFERENCES Fam(FamId),
  95. --FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  96. --GO
  97. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  98. --         VALUES (1,'745-34-19',1, 'А.А.','61005',2, 13,3,'М')
  99. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  100. --         VALUES (2,'234-43-53',2, 'Р.В', '61005', 1,1,45,'М')
  101. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  102. --         VALUES (3,'654-02-51',3, 'В.И.','61005', 3,11,2,'Ж')
  103. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  104. --         VALUES (4,'350-10-20',4, 'Ф.И.', '61005', 4, 7,223,'М')
  105. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  106. --         VALUES (5,'787-34-66',1, 'А.С.', '61005', 3,13,89,'Ж')
  107. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  108. --         VALUES (6,'787-37-56',2, 'А.С.', '61005', 2,112,13,'М')
  109. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  110. --         VALUES (7,'777-34-66',2, 'К.В.', '61005', 1,2,13,'М')
  111. --INSERT INTO SubscriberCopy(SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  112. --         VALUES (8,'787-34-12',4, 'М.С.', '61005', 2,112,13,'Ж')
  113. go
  114. --create table SubscriberCopy like Subscriber
  115. --insert SubscriberCopy select * from Subscriber
  116. select SubscriberId, PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex
  117. into SubscriberCopy from Subscriber
  118. GO
  119. select * from SubscriberCopy
  120. go
  121. -----------1
  122. UPDATE SubscriberCopy
  123. SET HouseNumber=5
  124. WHERE SubscriberId=4
  125. GO
  126. ---------2
  127. SELECT SubscriberId, PhoneNumber, Fam.Name, Iniz,Indeks,Street.Name, HouseNumber, FlatNumber, Sex
  128. FROM Subscriber,Fam,Street
  129. WHERE Subscriber.FamId=Fam.FamId and Subscriber.StreetId=Street.StreetId and Fam.Name NOT IN
  130. (SELECT Fam.Name FROM Fam WHERE Fam.Name like '[АЕЁИОУЭЮЯ]%')
  131. --(SELECT Fam.Name FROM Fam WHERE Fam.Name LIKE('А%') or Fam.Name LIKE ('О%')  or Fam.Name like('И%') or Fam.Name like('Е%') or Fam.Name like('У%') or Fam.Name like('Э%') or Fam.Name like('Я%'))
  132. UNION SELECT SubscriberId, PhoneNumber, Fam.Name, Iniz,Indeks,Street.Name, HouseNumber, FlatNumber, Sex
  133. FROM SubscriberCopy,Fam,Street
  134. WHERE SubscriberCopy.FamId=Fam.FamId and SubscriberCopy.StreetId=Street.StreetId and Fam.Name NOT IN
  135. --SELECT Fam.Name FROM Fam WHERE Fam.Name LIKE('А%') or Fam.Name LIKE ('О%')  or Fam.Name like('И%') or Fam.Name like('Е%') or Fam.Name like('У%') or Fam.Name like('Э%') or Fam.Name like('Я%'))
  136. (SELECT Fam.Name FROM Fam WHERE Fam.Name like '[АЕЁИОУЭЮЯ]%')
  137. ORDER BY Street.Name
  138. GO
  139. -------------3
  140. IF OBJECT_ID('MyDelete1','TRIGGER') IS NOT NULL
  141. DROP TRIGGER MyDelete1
  142. GO
  143. CREATE TRIGGER MyDelete1
  144. ON Subscriber
  145. instead of DELETE
  146. AS
  147.     delete from Subscriber where Subscriber.SubscriberId in(select SubscriberId from deleted)
  148.     and PhoneNumber  like '[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
  149. go
  150. delete from SubscriberCopy where SubscriberId=8
  151. go
  152. select * from SubscriberCopy
  153. go
  154. ------------4
  155. IF OBJECT_ID('MyInsert1','TRIGGER') IS NOT NULL
  156. DROP TRIGGER MyInsert1
  157. GO
  158. CREATE TRIGGER MyInsert1
  159. ON Fam
  160. INSTEAD OF INSERT
  161. AS
  162. DECLARE @s1 nvarchar(25)
  163. IF NOT EXISTS(SELECT * FROM Inserted
  164. WHERE Name IN
  165. (SELECT Name FROM Fam))
  166. BEGIN
  167.     INSERT INTO Fam(Name) SELECT
  168.     Name FROM Inserted
  169.     print('Subject added')
  170. END
  171. ELSE
  172.     PRINT('Unable to add')
  173. GO
  174. INSERT INTO Fam(FamId,Name)
  175.          VALUES (6,'Яблочных')
  176. SELECT * FROM Fam
  177. -----------------5
  178. IF OBJECT_ID('MyDelete2','TRIGGER') IS NOT NULL
  179. DROP TRIGGER MyDelete2
  180. GO
  181. CREATE TRIGGER MyDelete2
  182. ON Fam
  183. INSTEAD OF DELETE
  184. AS
  185.     DELETE FROM Subscriber WHERE Subscriber.FamId IN (SELECT FamId FROM deleted)
  186.     DELETE FROM Fam WHERE Fam.FamId IN(SELECT FamId FROM deleted)
  187. GO
  188. DELETE FROM Fam
  189. WHERE Name='Арбузова'
  190. GO
  191. --------------------6
  192. IF OBJECT_ID('UpdateInsert','TRIGGER') IS NOT NULL
  193. DROP TRIGGER UpdateInsert
  194. GO
  195. CREATE TRIGGER UpdateInsert
  196. ON Subscriber
  197. FOR UPDATE,INSERT
  198. AS
  199.     --if exists((select * from Subscriber union select * from inserted) group by StreetId having count(*)>3)
  200.     if exists(select * from Subscriber
  201.     group by StreetId having count(*)>3)
  202.     begin
  203.         print ('Unable to add')
  204.         rollback transaction
  205.     end
  206.     else
  207.         begin
  208.             print('Added')
  209.         end
  210. GO
  211. SELECT *
  212. FROM SubscriberCopy
  213. GO
Advertisement
Add Comment
Please, Sign In to add comment