Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.78 KB | None | 0 0
  1. USE master
  2. GO
  3. /*
  4. IF DB_ID(N'DataBaseLab9') IS NOT NULL
  5. DROP DATABASE DataBaseLab9;
  6. GO
  7.  
  8. CREATE DATABASE DataBaseLab9
  9. GO
  10. */
  11.  
  12. USE DataBaseLab9;
  13. GO
  14.  
  15.  
  16. IF OBJECT_ID (N'BookAuthors') IS NOT NULL
  17. BEGIN
  18.     IF OBJECT_ID (N'LibraryBooks') IS NOT NULL
  19.         DROP TABLE LibraryBooks;
  20.     DROP TABLE BookAuthors;
  21. END
  22. GO
  23.  
  24. CREATE TABLE BookAuthors
  25.     (AuthorID INT PRIMARY KEY IDENTITY(1,1),
  26.     FirstName VARCHAR(50),
  27.     LastName VARCHAR(50),
  28.     YearOfBirth INT,
  29.     City VARCHAR(50),
  30.     );
  31. GO
  32.  
  33.  
  34. IF OBJECT_ID (N'LibraryBooks') IS NOT NULL
  35.     DROP TABLE LibraryBooks;
  36. GO
  37.  
  38.     CREATE TABLE LibraryBooks
  39.     (BookID INT PRIMARY KEY IDENTITY(1,1),
  40.     NameBook VARCHAR(100),
  41.     YearOfPublication INT,
  42.     AuthorID INT
  43.     CONSTRAINT FK_Autors_Books FOREIGN KEY (AuthorID) REFERENCES BookAuthors (AuthorID)
  44.     );
  45.     GO
  46.  
  47.     INSERT BookAuthors (FirstName, LastName, YearOfBirth, City)
  48.     VALUES ('Nikolay', 'Gogol', 1809, 'Big Sorochintsy'),
  49.     ('Mikhail', 'Lermontov', 1814, 'Moscow'),
  50.     ('Alexander', 'Pushkin', 1799, 'Moscow'),
  51.     ('Taras', 'Shevchenko', 1814, 'Morintsy');
  52.  
  53.     INSERT LibraryBooks (AuthorID, NameBook, YearOfPublication)
  54.     VALUES (1, 'Dead Souls', 1841),
  55.     (2, 'Dead Souls', 1841),
  56.     (2, 'Overcoat', 1842),
  57.     (1, 'Hero of our time', 1840),
  58.     (3, 'Ruslan and Ludmila', 1820),
  59.     (4, 'Kobzar', 1860);
  60.    
  61.  
  62.     SELECT *FROM LibraryBooks;
  63.     GO
  64.  
  65.     SELECT *FROM BookAuthors
  66.     GO
  67.  
  68. USE DataBaseLab9;
  69. GO
  70.  
  71.  
  72. IF OBJECT_ID ('Books', 'V') IS NOT NULL
  73.     DROP VIEW Books
  74. GO
  75.  
  76. CREATE VIEW Books AS
  77.     SELECT LibraryBooks.NameBook AS NameBook,
  78.             BookAuthors.FirstName  AS AuthorFirstName,
  79.             BookAuthors.LastName  AS AuthorLastName
  80.     FROM LibraryBooks INNER JOIN BookAuthors ON  LibraryBooks.AuthorID = BookAuthors.AuthorID
  81. GO
  82.  
  83. SELECT *FROM Books
  84. GO
  85.  
  86.  
  87. ------------1-----------------
  88. USE DataBaseLab9;
  89. GO
  90.  
  91. IF OBJECT_ID ('InsertTrigger', 'TR')  IS NOT NULL
  92.     DROP TRIGGER InsertTrigger;
  93. GO
  94.  
  95. CREATE TRIGGER InsertTrigger ON LibraryBooks
  96.     AFTER INSERT
  97.     AS
  98.     PRINT 'add books'
  99. GO
  100.  
  101.  
  102. IF OBJECT_ID ('DeleteTrigger', 'TR')  IS NOT NULL
  103.     DROP TRIGGER DeleteTrigger;
  104. GO
  105.  
  106. CREATE TRIGGER DeleteTrigger ON LibraryBooks INSTEAD OF DELETE
  107.     AS
  108.     BEGIN
  109.         DELETE LibraryBooks WHERE EXISTS (SELECT AuthorID FROM deleted
  110.             WHERE LibraryBooks.NameBook = deleted.NameBook);
  111.     END
  112. GO
  113.  
  114.  
  115. INSERT LibraryBooks (NameBook, YearOfPublication) VALUES ('Evenings on a Farm Near Dikanka', 1831);
  116. SELECT *FROM LibraryBooks
  117. GO
  118.  
  119. DELETE FROM LibraryBooks WHERE (NameBook = 'Dead Souls')
  120. SELECT *FROM LibraryBooks
  121. GO
  122.  
  123.  
  124. IF OBJECT_ID ('UpdateTrigger', 'TR')  IS NOT NULL
  125.     DROP TRIGGER UpdateTrigger;
  126. GO
  127.  
  128. CREATE TRIGGER UpdateTrigger ON LibraryBooks AFTER UPDATE
  129.     AS
  130.         BEGIN
  131.             DECLARE @name VARCHAR(50) = (SELECT NameBook FROM deleted);
  132.             DECLARE @name_ VARCHAR(50) = (SELECT NameBook FROM inserted);
  133.             IF (UPDATE (NameBook))
  134.             BEGIN
  135.                 RAISERROR('ERROR!!!', 16, 1) ROLLBACK TRANSACTION
  136.             END
  137.         END
  138. GO
  139.  
  140. UPDATE LibraryBooks SET YearOfPublication = 1834 WHERE (AuthorID = 476)
  141. SELECT *FROM LibraryBooks
  142. GO
  143.  
  144. /*UPDATE LibraryBooks SET NameBook = 'new Name' WHERE (AuthorID = 476)
  145. Select *from LibraryBooks
  146. GO*/
  147.  
  148.  
  149.  
  150. -------------2-----------------
  151. IF OBJECT_ID ('InsertTriggerView', 'TR')  IS NOT NULL
  152.     DROP TRIGGER InsertTriggerView;
  153. GO
  154.  
  155. CREATE TRIGGER InsertTriggerView ON Books
  156.     INSTEAD OF INSERT
  157.     AS
  158.     /*IF EXISTS (SELECT * FROM inserted WHERE NameBook NOT IN (SELECT NameBook FROM LibraryBooks))
  159.     BEGIN
  160.         RAISERROR('ERROR!!!', 16, 1) ROLLBACK TRANSACTION
  161.     END*/
  162.     BEGIN
  163.         INSERT INTO LibraryBooks (NameBook)
  164.         SELECT inserted.NameBook
  165.         FROM inserted
  166.         INSERT INTO BookAuthors (FirstName, LastName)
  167.         SELECT inserted.AuthorFirstName, inserted.AuthorLastName
  168.         FROM inserted
  169.     END
  170. GO
  171.  
  172. INSERT INTO Books (NameBook, AuthorFirstName, AuthorLastName)
  173.     VALUES ('tesr', 'T', 'tt')
  174. SELECT * FROM Books
  175. GO
  176.  
  177. SELECT * FROM LibraryBooks
  178. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement