Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. --############################# Zadanie 0 ##############################
  2. --napisać kod ktory sprawdzi jakie sa w danej bazie widoki i skasuje wszystkie
  3. SELECT
  4. OBJECT_SCHEMA_NAME(v.object_id) schema_name,
  5. v.name
  6. FROM
  7. sys.views as v;
  8.  
  9.  
  10. --############################# ZADANIE 1 ##############################
  11.  
  12. Create trigger
  13. GO
  14.  
  15. --DROP TABLE Test;
  16. --GO
  17.  
  18. CREATE TABLE Test (ID int PRIMARY KEY, Ostatnia_aktualizacja datetime);
  19. GO
  20.  
  21. INSERT INTO Test(ID) VALUES(1);
  22. INSERT INTO Test(ID) VALUES(2);
  23. GO
  24.  
  25. --DROP TRIGGER trigger1;
  26. --GO
  27. CREATE TRIGGER trigger1
  28. ON Test
  29. AFTER UPDATE
  30. AS
  31. BEGIN
  32. UPDATE Test SET Ostatnia_aktualizacja = GETDATE() WHERE ID = (SELECT ID FROM inserted);
  33. END
  34. GO
  35.  
  36. UPDATE Test SET ID = 3 WHERE ID = 2;
  37. GO
  38.  
  39. SELECT * FROM Test;
  40.  
  41.  
  42.  
  43. --############################# ZADANIE 2 ##############################
  44.  
  45.  
  46.  
  47. --DROP TABLE Test;
  48. GO
  49.  
  50. CREATE TABLE Test (ID int, Ostatnia_aktualizacja date);
  51. GO
  52.  
  53. INSERT INTO Test(ID) VALUES(1);
  54. INSERT INTO Test(ID) VALUES(2);
  55. GO
  56.  
  57. --DROP TABLE Test_Historia;
  58. SELECT * INTO Test_Historia FROM Test WHERE 1 = 0;
  59. ALTER TABLE Test_Historia
  60. ADD Kto varchar(30),
  61. Kiedy datetime,
  62. Operacja varchar(30);
  63. GO
  64.  
  65. --DROP TRIGGER trigger2;
  66. CREATE TRIGGER trigger2
  67. ON Test
  68. AFTER DELETE
  69. AS
  70. BEGIN
  71. INSERT INTO Test_Historia VALUES(
  72. (SELECT ID FROM deleted),
  73. (SELECT Ostatnia_aktualizacja FROM deleted),
  74. CURRENT_USER,
  75. GETDATE(),
  76. 'DELETE');
  77. END
  78. GO
  79.  
  80. DELETE FROM Test WHERE ID = 1;
  81. SELECT * FROM Test_Historia;
  82.  
  83. --############################# ZADANIE 3 ##############################
  84.  
  85. --DROP TABLE Test;
  86. GO
  87.  
  88. CREATE TABLE Test (ID int, Ostatnia_aktualizacja date);
  89. GO
  90.  
  91. INSERT INTO Test(ID) VALUES(1);
  92. INSERT INTO Test(ID) VALUES(2);
  93. GO
  94.  
  95. --DROP TABLE Test_Historia;
  96. SELECT * INTO Test_Historia FROM Test WHERE 1 = 0;
  97. ALTER TABLE Test_Historia
  98. ADD Kto varchar(30),
  99. Kiedy datetime,
  100. Operacja varchar(30);
  101. GO
  102.  
  103. --DROP TRIGGER trigger3;
  104. CREATE TRIGGER trigger3
  105. ON Test
  106. AFTER UPDATE
  107. AS
  108. BEGIN
  109. INSERT INTO Test_Historia VALUES(
  110. (SELECT ID FROM deleted),
  111. (SELECT Ostatnia_aktualizacja FROM deleted),
  112. CURRENT_USER,
  113. GETDATE(),
  114. 'UPDATE');
  115. END
  116. GO
  117.  
  118. UPDATE Test SET ID = 3 WHERE ID = 2;
  119. SELECT * FROM Test_Historia;
  120.  
  121. --############################# ZADANIE 4 ##############################
  122.  
  123.  
  124.  
  125. --DROP TABLE Test;
  126. GO
  127.  
  128. CREATE TABLE Test (ID int, Kategoria varchar(30));
  129. GO
  130.  
  131. INSERT INTO Test(ID, Kategoria) VALUES(1, 'Kat 1');
  132. INSERT INTO Test(ID, Kategoria) VALUES(2, 'Kat 2');
  133. GO
  134.  
  135. --DROP TRIGGER trigger4;
  136. CREATE TRIGGER trigger4
  137. ON Test
  138. AFTER INSERT
  139. AS
  140. BEGIN
  141. IF ((SELECT COUNT(*) FROM Test WHERE Kategoria = (SELECT Kategoria FROM inserted)) >= 2)
  142. BEGIN
  143. PRINT 'ABC'
  144. ROLLBACK TRANSACTION
  145. END
  146. ELSE
  147. BEGIN
  148. PRINT '123'
  149. END
  150. END
  151. GO
  152.  
  153. DELETE FROM Test WHERE ID = 3;
  154. INSERT INTO Test(ID, Kategoria) VALUES(3, 'Kat 3');
  155. SELECT * FROM Test;
  156.  
  157.  
  158.  
  159. --############################# ZADANIE 5 ##############################
  160. --DROP TABLE Test;
  161. GO
  162.  
  163. CREATE TABLE Test (ID int, Kategoria varchar(30));
  164. GO
  165.  
  166. INSERT INTO Test(ID, Kategoria) VALUES(1, 'Kat 1');
  167. INSERT INTO Test(ID, Kategoria) VALUES(2, 'Kat 2');
  168. GO
  169.  
  170. DROP TRIGGER trigger5;
  171. GO
  172.  
  173. CREATE TRIGGER trigger5
  174. ON Test
  175. INSTEAD OF INSERT
  176. AS
  177. BEGIN
  178. INSERT INTO test SELECT inserted.ID, UPPER(inserted.Kategoria) FROM inserted;
  179. END
  180. GO
  181.  
  182. DELETE FROM Test WHERE ID = 3;
  183. INSERT INTO Test(ID, Kategoria) VALUES(3, 'Kat 3');
  184. SELECT * FROM Test;
  185.  
  186.  
  187. --############################# ZADANIE 5.1 ##############################
  188.  
  189.  
  190.  
  191. --DROP TABLE Test;
  192. GO
  193.  
  194. CREATE TABLE Test (ID int, Cena int);
  195. GO
  196.  
  197. INSERT INTO Test(ID, Cena) VALUES(1, 10);
  198. INSERT INTO Test(ID, Cena) VALUES(2, 20);
  199. GO
  200.  
  201. --DROP TRIGGER trigger6;
  202. CREATE TRIGGER trigger6
  203. ON Test
  204. INSTEAD OF INSERT
  205. AS
  206. BEGIN
  207. IF ((SELECT Cena FROM inserted) < 0)
  208. BEGIN
  209. INSERT INTO test SELECT inserted.ID, 0 FROM inserted;
  210. END
  211. ELSE
  212. BEGIN
  213. INSERT INTO test SELECT * FROM inserted;
  214. END
  215. END
  216. GO
  217.  
  218. DELETE FROM Test WHERE ID = 3;
  219. INSERT INTO Test(ID, Cena) VALUES(4, 15);
  220. SELECT * FROM Test;
  221.  
  222.  
  223.  
  224. --############################# ZADANIE 5.2 ##############################
  225.  
  226.  
  227.  
  228.  
  229. --DROP TABLE Test;
  230. GO
  231.  
  232. CREATE TABLE Test (ID int, NumerKategorii int);
  233. GO
  234.  
  235. INSERT INTO Test(ID, NumerKategorii) VALUES(1, 1);
  236. INSERT INTO Test(ID, NumerKategorii) VALUES(2, 3);
  237. GO
  238.  
  239. --DROP TRIGGER trigger7;
  240. CREATE TRIGGER trigger7
  241. ON Test
  242. INSTEAD OF INSERT
  243. AS
  244. BEGIN
  245. IF NOT EXISTS (SELECT CategoryID FROM Categories WHERE CategoryID = (SELECT NumerKategorii FROM inserted))
  246. BEGIN
  247. PRINT 'Kategoria nie istnieje';
  248. END
  249. ELSE
  250. BEGIN
  251. INSERT INTO test SELECT * FROM inserted;
  252. END
  253. END
  254. GO
  255.  
  256. DELETE FROM Test WHERE ID = 3;
  257. INSERT INTO Test(ID, NumerKategorii) VALUES(2, 2);
  258. SELECT * FROM Test;
  259.  
  260.  
  261.  
  262. --############################# ZADANIE 5.3 ##############################
  263.  
  264.  
  265. --DROP TABLE Test;
  266. GO
  267.  
  268. CREATE TABLE Test (ID int, NazwaKategorii varchar(30));
  269. GO
  270.  
  271. INSERT INTO Test(ID, NazwaKategorii) VALUES(1, 'Kat 1');
  272. INSERT INTO Test(ID, NazwaKategorii) VALUES(2, 'Kat 2');
  273. GO
  274.  
  275. --DROP TRIGGER trigger8;
  276. CREATE TRIGGER trigger8
  277. ON Test
  278. AFTER UPDATE
  279. AS
  280. BEGIN
  281. IF (COLUMNS_UPDATED() = 2)
  282. BEGIN
  283. PRINT 'Nie można zmieniać nazwy kategorii';
  284. ROLLBACK TRANSACTION;
  285. END
  286. END
  287. GO
  288.  
  289. DELETE FROM Test WHERE ID = 2;
  290. UPDATE Test SET ID = 8 WHERE ID = 2;
  291. SELECT * FROM Test;
  292.  
  293.  
  294. --############################# ZADANIE 5.4 ##############################
  295.  
  296. --DROP TABLE Test;
  297. GO
  298.  
  299. CREATE TABLE Test (ID int, NazwaKategorii varchar(30));
  300. GO
  301.  
  302. INSERT INTO Test(ID, NazwaKategorii) VALUES(1, 'Kat 1');
  303. INSERT INTO Test(ID, NazwaKategorii) VALUES(2, 'Kat 2');
  304. GO
  305.  
  306. --DROP TRIGGER trigger9;
  307. CREATE TRIGGER trigger9
  308. ON Test
  309. AFTER UPDATE
  310. AS
  311. BEGIN
  312. IF UPDATE(NazwaKategorii)
  313. BEGIN
  314. PRINT 'Nie można zmieniać nazwy kategorii';
  315. ROLLBACK TRANSACTION;
  316. END
  317. END
  318. GO
  319.  
  320. DELETE FROM Test WHERE ID = 8;
  321. UPDATE Test SET NazwaKategorii = 'Kat 2137' WHERE ID = 2;
  322. SELECT * FROM Test;
  323.  
  324.  
  325.  
  326. --############################# ZADANIE 5.5 ##############################
  327.  
  328. DROP TRIGGER trigger1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement