vakho

BAZA TRIGGERS

Jun 5th, 2013
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.58 KB | None | 0 0
  1. ---
  2. /* ლაბორატორიული 12
  3.  ტრიგერები */
  4.  
  5.  
  6.    
  7. ---- გაუშვით კოდი, რომელიც შექმნის ბაზას firma, ცხრილს anketa და anketa -ს შეავსებს მონაცემებით
  8. IF EXISTS
  9.     (SELECT name FROM sys.DATABASES
  10.     WHERE name='firma') DROP DATABASE firma
  11.     GO
  12.     CREATE DATABASE firma
  13.         USE firma
  14.    
  15. IF OBJECT_ID('anketa','u')IS NOT NULL
  16. DROP TABLE anketa
  17. GO
  18.     CREATE TABLE anketa
  19.     (
  20.     id INT NOT NULL,
  21.     saxeli nvarchar(50),
  22.     gvari VARCHAR(50),
  23.     mamis_saxeli VARCHAR(50),
  24.     bankis_angarishi nvarchar(50)
  25.     )
  26.   SELECT * FROM anketa
  27.    
  28.     INSERT INTO anketa
  29.     VALUES
  30.     (1,'ilia ','managadze','vano','asdf123456'),
  31.     (2,'maia','maisuradze','ilia','khgfgh23456'),
  32.     (3,'elene','maisuradze','ilia','dsdr23456'),
  33.     (4,'tornike','maisuradze','ilia','asdgh28456'),
  34.     (5,'salome','maisuradze','ilia','rtyu13456')
  35.  
  36. --- შევსება გაუშვით რამდენჯერმე  
  37. SELECT * FROM anketa
  38.    
  39. DELETE FROM anketa WHERE id<=5
  40. SELECT * FROM anketa
  41. ALTER TABLE anketa
  42. ADD CONSTRAINT id PRIMARY KEY(id)
  43.      
  44.     --- შევსება გაუშვით რამდენჯერმე  
  45.  
  46.      INSERT INTO anketa
  47.     VALUES
  48.     (1,'ilia ','managadze','vano','asdf123456'),
  49.     (2,'maia','maisuradze','ilia','khgfgh23456'),
  50.     (3,'elene','arabidze','ilia','dsdr23456'),
  51.     (4,'tornike','giorgadze','ilia','asdgh28456'),
  52.     (5,'salome','todria','ilia','rtyu13456')
  53.    
  54.     SELECT * FROM anketa
  55.    
  56.     UPDATE anketa
  57.     SET mamis_saxeli='daviti'
  58.     WHERE id=3
  59.    
  60.     DELETE FROM anketa
  61.     WHERE id=5
  62.    
  63.     SELECT * FROM anketa
  64.    
  65.      ---after ტრიგერი
  66.      
  67.     IF OBJECT_ID('myTrigger', 'tr') IS NOT NULL
  68.     DROP TRIGGER myTrigger
  69.     GO
  70.     CREATE TRIGGER myTrigger
  71.     ON anketa
  72.     after INSERT, UPDATE, DELETE
  73.     AS
  74.     print('SORRY MAN! YOU CANT DELETE, UPDATE OR INSERT');
  75.     --raiserror (N'insert,update,delete ოპერაციების ის შესრულება არ შეგიძლიათ', 15, 10);
  76.     ROLLBACK tran -- ukan dabruneba (wina tranzaqciamde)!
  77.    
  78.     IF OBJECT_ID ('after_shetyobineba', 'TR') IS NOT NULL
  79.     DROP TRIGGER after_shetyobineba;
  80.     GO
  81.     CREATE TRIGGER after_shetyobineba
  82.     ON anketa
  83.     AFTER INSERT, UPDATE,DELETE
  84.     AS RAISERROR (N'insert,update,delete ოპერაციების ის შესრულება არ შეგიძლიათ', 15, 10);
  85.     ROLLBACK TRAN
  86.     GO
  87.     ---- არ შესრულდება შემდეგი ოპერაციები
  88.    
  89.     INSERT INTO anketa VALUES
  90.    
  91.     (18,'eka','Telia','ilia','rtyu13456')
  92.     SELECT * FROM anketa
  93.    
  94.    
  95.     UPDATE anketa
  96.     SET mamis_saxeli='vladimeri'
  97.     WHERE id=4
  98.    
  99.     DELETE FROM anketa WHERE id=1
  100.    
  101.     --- სამივე შემთხვევაში გამოვა შეტყობინება - insert,update,delete ოპერაციების ის შესრულება არ შეგიძლიათ
  102.  
  103.  
  104. ----alter trigger
  105. ALTER TRIGGER after_shetyobineba
  106. ON anketa
  107.     AFTER INSERT, UPDATE,DELETE
  108.     AS
  109.     RAISERROR ('nuras ukacravad', 15, 10);
  110.     ROLLBACK TRANSACTION
  111.     GO
  112.  
  113.  
  114. ---after ტრიგერი,  disable,  enable trigger ---
  115.  
  116. disable TRIGGER after_shetyobineba ON anketa
  117.  
  118. USE firma
  119.  
  120. IF OBJECT_ID ('after_update', 'TR') IS NOT NULL
  121.     DROP TRIGGER after_update;
  122.     GO
  123.     CREATE TRIGGER after_update
  124.     ON anketa
  125.     AFTER  UPDATE
  126.     AS
  127.      IF UPDATE(bankis_angarishi)
  128.      BEGIN
  129.         raiserror ('redaqtireba sheuzlebelia',15,100)
  130.         ROLLBACK TRAN
  131.     END
  132.    
  133.      UPDATE anketa
  134.      SET bankis_angarishi='tttt123654'
  135.      WHERE id=2
  136.      
  137.      SELECT * FROM anketa
  138.      ---  ტრიგერის გათიშვა
  139.      disable TRIGGER after_update ON anketa
  140.       ---განახლება შესრულდება
  141.      UPDATE anketa
  142.      SET bankis_angarishi='123654'
  143.      WHERE id=3
  144.      SELECT * FROM anketa
  145.      --- ტრიგერის გააქტიურება
  146.      enable TRIGGER after_update ON anketa
  147.    
  148.     ---განახლება კვლავ არ შესრულდება
  149.      UPDATE anketa
  150.      SET bankis_angarishi='kkk123654'
  151.      WHERE id=4
  152.  
  153.     SELECT * FROM anketa
  154.    
  155.     ---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  156.  
  157. ----alter triger
  158.  
  159. --- გაუშვით კოდები, რომელიც შექმნის ცხრილს და შეავსებს
  160.  
  161. IF object_id('shemosavali' ,'u') IS NOT NULL
  162. DROP TABLE shemosavali
  163. GO
  164. CREATE TABLE shemosavali
  165.     (id INT PRIMARY KEY,
  166.     firma nvarchar(50),
  167.     shemosavali money,
  168.     gasavali money,
  169.     mogeba AS shemosavali-gasavali
  170.     )
  171.  
  172. INSERT INTO shemosavali VALUES
  173.  
  174. (1,'firma1',4500,2200),
  175. (2,'firma2',7500,1200),
  176. (3,'firma3',8500,5200),
  177. (4,'firma1',4500,1200),
  178. (5,'firma2',4500,2200),
  179. (6,'firma2',4200,3200),
  180. (7,'firma1',4900,1200)
  181.  
  182. ----- ტრიგერი  ყოველი ახალი ჩანაწერის გაკეტებისთანავე დააბრუნოს მოგებების ჯამი, მაქსიმალური, მინიმალური და საშუალო მოგება
  183. USE firma
  184.  
  185. IF OBJECT_ID('SuperTrigger', 'tr') IS NOT NULL
  186. DROP TRIGGER SuperTrigger
  187. GO
  188. CREATE TRIGGER SuperTrigger
  189. ON shemosavali
  190. after INSERT
  191. AS
  192. BEGIN
  193.     DECLARE @ss money, @MAX money, @MIN money, @avg money
  194.    
  195.     SELECT @ss=SUM(mogeba) FROM shemosavali
  196.     SELECT @MAX=MAX(mogeba) FROM shemosavali
  197.     SELECT @MIN=MIN(mogeba) FROM shemosavali
  198.     SELECT @avg=AVG(MOgeba) FROM shemosavali
  199.     SELECT @ss, @MAX, @MIN, @avg
  200. END
  201.  
  202.         INSERT INTO shemosavali
  203.     VALUES
  204.     (21,'tbc',100000,2500)
  205.    
  206.     --- ამოცანა  გაუშვით ქვემოთ მოცემული კოდი კრედიტების ცხრილის შექმნისა და შევსების მიზნით.  შექმენით ტრიგერი, რომელიც ახალი მონაცემების დამატების, ამოშლის ან განახლების შემთხვევაში  გამოიტანს განახლებულ შეტყობინებას იმის თაობაზე თუ რამდენმა სტუდენტმა დაამავრა და რამდენი დაამთავრებს ერთ სემესტრში.
  207.    
  208.     IF object_id('kreditebi' ,'u') IS NOT NULL
  209. DROP TABLE kreditebi
  210. GO
  211. CREATE TABLE kreditebi
  212.  
  213.     ( id INT PRIMARY KEY,
  214.     gvari nvarchar(50),
  215.     saxeli nvarchar(50),
  216.     mimarTuleba nvarchar(50),
  217.     sachiro_kreditebi INT,
  218.     mopovebuli_kreditebi INT,
  219.     darchenili_kreditebi  AS sachiro_kreditebi-mopovebuli_kreditebi
  220.  
  221.     )
  222.     SELECT * FROM kreditebi
  223.     INSERT INTO kreditebi
  224.     VALUES
  225.    
  226.         (1,'sanaia', 'irakli','matematika',240,190),
  227.         (2,'axalaia', 'gia','qimiq',240,230),
  228.         (3,'beridze', 'gela','biologia',240,150),
  229.         (4,'soselia', 'zura','matematika',240,180),
  230.         (5,'arabidze', 'nino','komp.mecniereba',240,240),
  231.         (6,'todua', 'maka','matematika',240,130),
  232.         (7,'sanikidze', 'eka','matematika',240,200),
  233.         (8,'mania', 'gio','komp.mecniereba',240,240),
  234.         (9,'salia', 'daTo','matematika',240,180),
  235.         (10,'todria', 'maka','qimiq',240,200),
  236.         (11,'metreveli', 'elene','komp.mecniereba',240,240),
  237.         (12,'koberidze', 'erekle','qimiq',240,230),
  238.         (13,'mania', 'maia','fizika',240,185),
  239.         (14,'geladze', 'ana','fizika',240,240),
  240.         (15,'sofromadze', 'aleko','qimia',240,90)
  241.    
  242.     ---- ამოცანის ტრიგერი
  243.  
  244.  SELECT MAX(id) FROM kreditebi
  245.  
  246. ---ჩაწერა
  247. INSERT INTO kreditebi
  248.     VALUES
  249.    
  250.         (16,'sanaia', 'ira','matematika',240,220),
  251.         (17,'axalaia', 'mariami','qimiq',240,240)
  252.  
  253. INSERT INTO kreditebi
  254.     VALUES
  255.    
  256.         (18,'sanaia', 'ira','matematika',240,220),
  257.         (19,'axalaia', 'mariami','qimiq',240,240)
  258.        
  259.        
  260. ---ამოშლა
  261. SELECT * FROM kreditebi
  262. DELETE FROM kreditebi WHERE id=5   
  263. --- განახლება
  264. UPDATE kreditebi
  265. SET  mopovebuli_kreditebi=240 WHERE id=1
  266.  
  267.  
  268. ----ცვლადი ცხრილი  
  269.  
  270. DECLARE @daamtavra TABLE
  271. ( id INT PRIMARY KEY,
  272.     gvari nvarchar(50),
  273.     saxeli nvarchar(50),
  274.     mimarTuleba nvarchar(50)
  275.         )
  276.     DECLARE @ert_semestrshi TABLE
  277.    
  278.     ( id INT PRIMARY KEY,
  279.     gvari nvarchar(50),
  280.     saxeli nvarchar(50),
  281.     mimarTuleba nvarchar(50)
  282.    
  283.     )
  284. INSERT INTO @daamtavra
  285. SELECT id,gvari,saxeli,mimarTuleba FROM kreditebi WHERE
  286. darchenili_kreditebi<=0
  287.  
  288. INSERT INTO @ert_semestrshi
  289. SELECT id,gvari,saxeli,mimarTuleba FROM kreditebi WHERE
  290. darchenili_kreditebi<=35
  291. SELECT  * FROM @daamtavra
  292. SELECT * FROM @ert_semestrshi
  293. SELECT * FROM kreditebi
  294.  
  295. ------ trigeri
  296.  
  297.  
  298.  
  299. SELECT * FROM kreditebi
  300. SELECT MAX(id) FROM kreditebi
  301.  
  302. INSERT INTO kreditebi
  303. VALUES( 21,'aaa','ddd','mmmm',240,240),
  304.     ( 32,'aaa','ddd','mmmm',240,220)
  305.  
  306. INSERT INTO kreditebi
  307.  
  308. VALUES( 32,'aaa','ddd','mmmm',240,180),
  309.     ( 33,'aaa','ddd','mmmm',240,22)
  310.  
  311.  
  312. ---- ტრიგერის გამოყენებით აუდიტი
  313.  
  314. ----გაუშვით კოდი რომელიც შექმნის ორ ცხრილს
  315. USE firma
  316. IF OBJECT_ID ('test','u')IS NOT NULL
  317. DROP TABLE test
  318. GO
  319. CREATE TABLE test
  320. (
  321. id INT,
  322. gvari nvarchar(50),
  323. saxeli nvarchar(50),
  324. testirebis_shedegi INT
  325. )
  326.  
  327. IF OBJECT_ID ('test_audit','u')IS NOT NULL
  328. DROP TABLE test_audit
  329. GO
  330. CREATE TABLE test_audit
  331. (aid INT,
  332. a_gvari nvarchar(50),
  333. a_saxeli nvarchar(50),
  334. a_testirebis_shedegi INT,
  335. a_qmedea nvarchar(50),
  336. a_qmedebis_tarigi DATE
  337. )
  338.  
  339.  
  340. --TRIGGER
  341.  
  342. INSERT INTO test VALUES
  343. (7,'dddd','ssss',12)
  344. SELECT * FROM test_audit
  345. SELECT * FROM test
  346. SELECT a_gvari FROM test_audit
Advertisement
Add Comment
Please, Sign In to add comment