Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 19.84 KB | None | 0 0
  1. ------------lab6--------------
  2. USE master;
  3. GO
  4.  
  5. IF DB_ID ('SecondDB') IS NOT NULL
  6.     DROP DATABASE SecondDB;
  7. GO
  8.  
  9. CREATE DATABASE SecondDB
  10.  ON (NAME = SecondDB_Primary, FILENAME = '/home/lab6/seconddb.mdf', SIZE = 5, MAXSIZE = 100, FILEGROWTH = 5%)
  11.     LOG ON (NAME = SecondDB_Log, FILENAME = '/home/lab6/secondlog.ldf', SIZE = 5, MAXSIZE = 25, FILEGROWTH = 5)
  12. GO
  13.  
  14. USE SecondDB
  15. GO
  16.  
  17. --Создать таблицу с автоинкрементным первичным ключом
  18.  
  19. --уникальность свойства IDENTITY гарантирована только в рамках таблицы, в которой оно использовано;
  20. --таблица может содержать только один столбец со свойством IDENTITY;
  21. CREATE SCHEMA FirstSchema
  22.     CREATE TABLE FirstTable(
  23.     id INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
  24.     phone CHAR(11) NULL,
  25.     email VARCHAR(50) NOT NULL,
  26.     DATE DATETIME NOT NULL,
  27.         age INT NOT NULL,
  28.         city VARCHAR(30)
  29. )
  30. GO
  31. /*
  32. --возвращает последнее значение идентификатора, созданного для таблицы
  33. --значение идентификатора может относиться к любому сеансу и любой области
  34. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  35. --возвращает последнее значение идентификатора, вставленного
  36. --в любую таблицу в текущем сеансе по всем областям действий
  37. SELECT @@IDENTITY AS [IDENTITY]
  38. --возвращает последнее значение идентификатора, вставленного
  39. --в любую таблицу в текущем сеансе в той же области
  40. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  41. GO
  42.  
  43. --Функция IDENT_CURRENT не ограничена областью действия и сеансом, но ограничена указанной таблицей;
  44. --Функция @@IDENTITY ограничена текущим сеансом;
  45. --Функция ыSCOPE_IDENTITY ограничена текущим сеансом и областью действия.
  46. --Под областью подразумевается хранимая процедура, триггер или пакет
  47.  
  48. INSERT INTO FirstSchema.FirstTable VALUES ('8900000000', 'db@yandex.ru', GETDATE(), 20, 'Berlin')
  49. INSERT INTO FirstSchema.FirstTable VALUES ('8900000001', 'db1@yandex.ru', GETDATE(), 36, 'Rome')
  50. GO
  51.  
  52. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  53. SELECT @@IDENTITY AS [IDENTITY]
  54. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  55. GO
  56.  
  57. DROP TABLE FirstSchema.FirstTable
  58. SELECT IDENT_CURRENT('FirstTable') AS [IDENT_CURRENT]
  59. SELECT @@IDENTITY AS [IDENTITY]
  60. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
  61. GO
  62. */
  63.  
  64. --Добавить поля, для которых используются ограничения (CHECK), значения по умолчанию (DEFAULT),
  65. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT CK_date CHECK (DATE > CONVERT(DATETIME, '01-09-2010', 105))
  66. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT CK_Person CHECK (age >= 18 AND City ='Moscow');
  67. ALTER TABLE FirstSchema.FirstTable ADD CONSTRAINT DFLT_date DEFAULT GETDATE() FOR DATE;
  68. GO
  69.  
  70. INSERT INTO FirstSchema.FirstTable (phone, email, age, city) VALUES (89992001010, 'e@mail.ru', 18, 'Moscow')
  71. INSERT INTO FirstSchema.FirstTable VALUES (89992001011, 'e@mail.ru', CONVERT(DATETIME, '01-09-2017', 105), 18, 'Moscow')
  72. INSERT INTO FirstSchema.FirstTable VALUES (89992001018, 'p@mail.ru', CONVERT(DATETIME, '01-09-2017', 105), 20, 'Moscow')
  73. INSERT INTO FirstSchema.FirstTable VALUES (89992001015, 'u@mail.ru', CONVERT(DATETIME, '01-09-2014', 105), 23, 'Moscow')
  74. INSERT INTO FirstSchema.FirstTable VALUES (89992001017, 'o@mail.ru', CONVERT(DATETIME, '01-09-2015', 105), 22, 'Moscow')
  75. --INSERT INTO FirstSchema.FirstTable VALUES (89992001012, 'r@mail.ru', CONVERT(DATETIME, '01-09-2009', 105), 30, 'Bolshevo')
  76. --INSERT INTO FirstSchema.FirstTable VALUES (89992001013, 't@mail.ru', CONVERT(DATETIME, '01-09-2015', 105), 42, 'Mytischi')
  77. --INSERT INTO FirstSchema.FirstTable VALUES (89992001014, 'y@mail.ru', CONVERT(DATETIME, '01-09-2014', 105), 17, 'Shelkovo')
  78. --INSERT INTO FirstSchema.FirstTable VALUES (89992001016, 'i@mail.ru', CONVERT(DATETIME, '01-09-2012', 105), 50, 'Himki')
  79. GO
  80.  
  81. --Создать таблицу с первичным ключом на основе глобального уникального идентификатора
  82.  
  83. --уникальный для всей базы данных или всех баз данных во всех компьютерных сетях
  84. CREATE TABLE FirstSchema.UniqueTable (
  85.     workID UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT NEWID(),
  86.     workName VARCHAR(25) NULL
  87. )
  88. GO
  89.  
  90. INSERT INTO FirstSchema.UniqueTable (workName) VALUES ('Nature');
  91. INSERT INTO FirstSchema.UniqueTable VALUES (NEWID(), 'Sea');
  92.  
  93. --Создать таблицу с первичным ключом на основе последовательности
  94.  
  95. --Sequence – генерирует последовательность чисел так же как и identity.
  96. --последовательность не зависит от какой-либо конкретной таблицы
  97. --В системах баз данных последовательности применяют для автоматической генерации PK
  98.  
  99. CREATE TABLE FirstSchema.SecondTable
  100. (
  101.     customerID INT NOT NULL PRIMARY KEY,
  102.     customerName VARCHAR(25) NOT NULL,
  103.     numberOfWorks INT NULL
  104. )
  105. GO
  106.  
  107. CREATE TABLE FirstSchema.ThirdTable
  108. (
  109.     customerID1 INT NOT NULL PRIMARY KEY,
  110.     customerName1 VARCHAR(25) NOT NULL,
  111.     numberOfWorks1 INT NULL
  112. )
  113. GO
  114.  
  115. --сквозная нумерация
  116. CREATE SEQUENCE FirstSequence
  117. START WITH 1
  118. INCREMENT BY 1;
  119. GO
  120.  
  121. INSERT FirstSchema.SecondTable (customerID, customerName, numberOfWorks)
  122.         VALUES (NEXT VALUE FOR FirstSequence, 'Ivanov', 2)
  123. INSERT FirstSchema.ThirdTable (customerID1, customerName1, numberOfWorks1)
  124.         VALUES (NEXT VALUE FOR FirstSequence, 'Sidorov', 8)
  125. INSERT FirstSchema.SecondTable (customerID, customerName, numberOfWorks)
  126.         VALUES (NEXT VALUE FOR FirstSequence, 'Popov', 1)
  127. GO
  128.  
  129. --Создать две связанные таблицы
  130. CREATE TABLE FirstSchema.TableWithPK
  131. (
  132.     purchaseID INT PRIMARY KEY IDENTITY NOT NULL,
  133.     quantity INT NOT NULL,
  134.     seller VARCHAR(25) NOT NULL
  135. )
  136. GO
  137.  
  138. INSERT INTO FirstSchema.TableWithPK VALUES (100, 'Ivan');
  139. INSERT INTO FirstSchema.TableWithPK VALUES (200, 'Petr');
  140. INSERT INTO FirstSchema.TableWithPK VALUES (300, 'Ivan');
  141. INSERT INTO FirstSchema.TableWithPK VALUES (300, 'Ivan');
  142. INSERT INTO FirstSchema.TableWithPK VALUES (900, 'Anna');
  143. INSERT INTO FirstSchema.TableWithPK VALUES (600, 'Petr');
  144.  
  145.  
  146. CREATE TABLE FirstSchema.TableWithFK(
  147.   productID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  148.   productName VARCHAR(30) NOT NULL,
  149.   manufacturer VARCHAR(30) NOT NULL,
  150.   purchaseID INT NULL,
  151.         CONSTRAINT configs FOREIGN KEY (purchaseID) REFERENCES FirstSchema.TableWithPK (purchaseID)
  152.       --выдает ошибку
  153.         --ON DELETE NO ACTION
  154.         --проставлет null
  155.     ON DELETE SET NULL
  156.     --ON DELETE SET DEFAULT
  157.         --удаляет строку
  158.     --ON DELETE CASCADE
  159. )
  160. GO
  161.  
  162. INSERT INTO FirstSchema.TableWithFK VALUES ('Product1', 'Russia', 1);
  163. INSERT INTO FirstSchema.TableWithFK VALUES ('Product2', 'China', 2);
  164. INSERT INTO FirstSchema.TableWithFK VALUES ('Product2', 'Russia', 3);
  165. INSERT INTO FirstSchema.TableWithFK VALUES ('Product3', 'Italy', 4);
  166. GO
  167.  
  168. DELETE FirstSchema.TableWithPK WHERE purchaseID = 4
  169. GO
  170.  
  171. -------------------lab7---------------
  172. CREATE VIEW FirstSchema.FirstView WITH SCHEMABINDING AS
  173.     SELECT o.id, o.phone, o.email, o.DATE, o.age, o.city
  174.     FROM FirstSchema.FirstTable o
  175.     WHERE age > 19
  176.     WITH CHECK OPTION
  177. GO
  178.  
  179. --2----создать представление на основе полей обеих связанных таблиц задания 6
  180. CREATE VIEW FirstSchema.SecondView AS
  181.     SELECT a.purchaseID, a.quantity, a.seller, b.manufacturer, b.productID, b.productName
  182.     FROM FirstSchema.TableWithPK a RIGHT JOIN FirstSchema.TableWithFK b
  183.         ON a.purchaseID = b.purchaseID
  184.     --WITH CHECK OPTION
  185. GO
  186.  
  187. CREATE INDEX FirstIndex ON FirstSchema.FirstTable (email, phone)
  188.     INCLUDE (age)
  189.     GO
  190.  
  191. CREATE UNIQUE CLUSTERED INDEX SecondIndex ON FirstSchema.FirstView (age)
  192.     GO
  193.  
  194. SELECT * FROM FirstSchema.FirstView
  195.  
  196. --------lab8---------------
  197. USE master
  198. GO
  199.  
  200. IF DB_ID ('MyDB') IS NOT NULL
  201.     DROP DATABASE MyDB;
  202. GO
  203.  
  204. CREATE DATABASE MyDB
  205.  ON (NAME = MyDB_Primary, FILENAME = '/home/lab6/mydb.mdf', SIZE = 5, MAXSIZE = 100, FILEGROWTH = 5%)
  206.     LOG ON (NAME = MyDB_Log, FILENAME = '/home/lab6/mydblog.ldf', SIZE = 5, MAXSIZE = 25, FILEGROWTH = 5)
  207. GO
  208.  
  209. --Создать хранимую процедуру, производящую выборку из некоторой
  210. --таблицы и возвращающую результат выборки в виде курсора.
  211.  
  212. USE MyDB
  213. GO
  214.  
  215. CREATE SCHEMA FirstSchema
  216.     CREATE TABLE Customer (
  217.     id INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
  218.     phone CHAR(11) NULL,
  219.     email VARCHAR(50) NOT NULL,
  220.         name NVARCHAR(25) NOT NULL,
  221.         surname NVARCHAR(25) NOT NULL,
  222.         patronymic VARCHAR(25) NULL,
  223.         city NVARCHAR(30) NOT NULL,
  224.         age INT NOT NULL,
  225. )
  226. GO
  227.  
  228. INSERT INTO FirstSchema.Customer VALUES (89992001011, 'a@mail.ru', 'Ivan', 'Petrov', 'Ivanovich', 'Moscow', 18)
  229. INSERT INTO FirstSchema.Customer VALUES (89992001012, 'b@mail.ru', 'Nickolay', 'Kotov', '', 'Petersburg', 19)
  230. INSERT INTO FirstSchema.Customer VALUES (89992001013, 'c@mail.ru', 'Vladimir', 'Popov', 'Ivanovich', 'Petersburg', 20)
  231. INSERT INTO FirstSchema.Customer VALUES (89992001014, 'd@mail.ru', 'Anna', 'Eliseeva', 'Olegovna', 'Moscow', 27)
  232. INSERT INTO FirstSchema.Customer VALUES (89992001015, 'e@mail.ru', 'Ivan', 'Ivanov', 'Ivanovich', 'Kazan', 20)
  233. GO
  234.  
  235. --DECLARE — выполняет объявление явного курсора.
  236. --OPEN — открывает курсор, создавая новый результирующий набор на базе указанного запроса.
  237. --FETCH — выполняет последовательное извлечение строк из результирующего набора от начала до конца.
  238. --CLOSE — закрывает курсор и освобождает занимаемые им ресурсы.
  239.  
  240. --Опция OUTPUT указывает, что параметр процедуры является возвращаемым, и с его помощью можно возвратить значение
  241. -- из хранимой процедуры вызывающей процедуре или системе.
  242.  
  243. --@cursor_rows -- параметр процедуры типа cursor
  244. --Опция OUTPUT указывает, что параметр процедуры является возвращаемым, и с его помощью можно возвратить значение из
  245. -- хранимой процедуры вызывающей процедуре или системе.
  246.  
  247.  
  248. -- Курсорыявляются расширением результирующих наборов, которые предоставляют механизм, позволяющий
  249. -- обрабатывать одну строку
  250.  
  251. --функции всегда возвращают одно значение.
  252.  
  253.  
  254. CREATE PROCEDURE FirstSchema.get_data @cursor_rows CURSOR VARYING OUTPUT
  255.     AS SET @cursor_rows = CURSOR SCROLL
  256.         FOR SELECT name, surname FROM Customer
  257.     OPEN @cursor_rows
  258. GO
  259.  
  260. --Хранимая процедура выполняется посредством инструкции EXECUTE пользователем
  261. --Вызов процедуры и вывод на печать данных из выходного курсора
  262. DECLARE @my_cur1 CURSOR
  263. EXEC FirstSchema.get_data @cursor_rows = @my_cur1 OUTPUT
  264. --при попытке запросить состояние строки, удаленной после открытия курсора,
  265. --функция @@FETCH_STATUS возвращает состояние "строка отсутствует“
  266. FETCH NEXT FROM @my_cur1
  267. WHILE (@@FETCH_STATUS = 0)
  268.         FETCH NEXT FROM @my_cur1
  269. CLOSE @my_cur1
  270. DEALLOCATE @my_cur1;
  271. GO
  272.  
  273. --Модифицировать хранимую процедуру п.1. таким образом, чтобы выборка осуществлялась с формированием столбца,
  274. --значение которого формируется пользовательской функцией
  275.  
  276. CREATE FUNCTION FirstSchema.create_id (@city VARCHAR(30)) RETURNS INT
  277.     AS
  278.         BEGIN
  279.             DECLARE @res INT;
  280.             SET @res = 0;
  281.             IF (@city = 'Moscow')
  282.                 SET @res = 1
  283.             IF (@city = 'Petersburg')
  284.                 SET @res = 2
  285.             IF (@city = 'Kazan')
  286.                 SET @res = 3
  287.             RETURN @res
  288.         END
  289. GO
  290.  
  291.  
  292. ALTER PROCEDURE FirstSchema.get_data @cursor_rows CURSOR VARYING OUTPUT
  293.     AS SET @cursor_rows = CURSOR
  294.         FOR SELECT name, surname, FirstSchema.create_id(city) AS cityId FROM Customer
  295.     OPEN @cursor_rows
  296. GO
  297.  
  298. DECLARE @my_cur1 CURSOR
  299. EXEC FirstSchema.get_data @cursor_rows = @my_cur1 OUTPUT
  300. FETCH NEXT FROM @my_cur1
  301. WHILE (@@FETCH_STATUS = 0)
  302.         FETCH NEXT FROM @my_cur1
  303. CLOSE @my_cur1
  304. DEALLOCATE @my_cur1;
  305. GO
  306.  
  307. --Создать хранимую процедуру, вызывающую процедуру п.1., осуществляющую прокрутку возвращаемого курсора
  308. --и выводящую сообщения, сформированные из записей при выполнении условия, заданного еще одной пользовательской функцией.
  309.  
  310. CREATE FUNCTION FirstSchema.condition (@age INT, @patronymic VARCHAR(25)) RETURNS INT
  311.     AS
  312.         BEGIN
  313.             DECLARE @res INT
  314.             SET @res = 0
  315.             IF (@age <= 20) AND (@patronymic != '')
  316.             SET @res = 1
  317.             RETURN @res
  318.         END
  319. GO
  320.  
  321. ALTER PROCEDURE FirstSchema.get_data @cursor_rows CURSOR VARYING OUTPUT
  322.     AS SET @cursor_rows = CURSOR SCROLL
  323.         FOR SELECT name, surname, age, patronymic FROM Customer
  324.     OPEN @cursor_rows
  325. GO
  326.  
  327. CREATE PROCEDURE FirstSchema.scroll_data
  328.         AS
  329.             DECLARE @cursor CURSOR
  330.             DECLARE @name VARCHAR(25)
  331.             DECLARE @surname VARCHAR(25)
  332.             DECLARE @age INT
  333.             DECLARE @patronymic VARCHAR(25)
  334.  
  335.             EXEC FirstSchema.get_data @cursor_rows = @cursor OUTPUT
  336.             FETCH LAST FROM @cursor INTO @name, @surname, @age, @patronymic
  337.             WHILE (@@FETCH_STATUS = 0)
  338.                 BEGIN
  339.                     IF (FirstSchema.condition(@age, @patronymic) = 1)
  340.                         PRINT @name + ' ' + @surname + ' ' + CAST(@age AS NVARCHAR)+ ' ' + @patronymic;
  341.  
  342.                         FETCH PRIOR FROM @cursor INTO @name, @surname, @age, @patronymic
  343.                 END
  344.             CLOSE @cursor
  345.             DEALLOCATE @cursor
  346. GO
  347.  
  348. EXEC FirstSchema.scroll_data
  349. GO
  350.  
  351. --Модифицировать хранимую процедуру п.2. таким образом, чтобы выборка формировалась с помощью табличной функции
  352.  
  353. --inline
  354. CREATE FUNCTION FirstSchema.create_id1 () RETURNS TABLE
  355. AS RETURN (
  356.         SELECT name, surname, FirstSchema.create_id(FirstSchema.Customer.city) AS city FROM Customer
  357.     )
  358. GO
  359.  
  360. --not inline
  361. CREATE FUNCTION FirstSchema.create_id2 () RETURNS @T TABLE (name VARCHAR(30), surname VARCHAR(30), id INT)
  362.     AS BEGIN WITH res(name, surname, id)
  363.         AS (SELECT name, surname, FirstSchema.create_id(FirstSchema.Customer.city) AS city FROM Customer)
  364.         INSERT @T SELECT name, surname, id FROM res
  365.         RETURN
  366. END
  367. GO
  368.  
  369. ALTER PROCEDURE FirstSchema.get_data @cursor_rows CURSOR VARYING OUTPUT
  370.  AS SET @cursor_rows = CURSOR
  371.         FOR SELECT * FROM FirstSchema.create_id2()
  372.     OPEN @cursor_rows
  373. GO
  374.  
  375. DECLARE @my_cur3 CURSOR
  376. EXEC FirstSchema.get_data @cursor_rows = @my_cur3 OUTPUT
  377. FETCH NEXT FROM @my_cur3
  378. WHILE (@@FETCH_STATUS = 0)
  379.         FETCH NEXT FROM @my_cur3
  380. CLOSE @my_cur3
  381. DEALLOCATE @my_cur3;
  382. GO
  383.  
  384.  
  385. ---------------------lab9----------------------------
  386. --Для одной из таблиц пункта 2 задания 7 создать триггеры на вставку, удаление и добавление,
  387. --при выполнении заданных условий один из триггеров должен инициировать возникновение ошибки (RAISERROR / THROW).
  388.  
  389. USE SecondDB
  390. GO
  391.  
  392. CREATE TRIGGER insert_trigger
  393.     ON SecondDB.FirstSchema.TableWithPK
  394.     AFTER INSERT
  395.         AS PRINT 'inserted'
  396. GO
  397.  
  398. CREATE TRIGGER update_trigger
  399.     ON SecondDB.FirstSchema.TableWithPK
  400.     AFTER UPDATE
  401.         AS PRINT 'updated'
  402. GO
  403.  
  404. CREATE TRIGGER delete_trigger
  405.     ON SecondDB.FirstSchema.TableWithPK
  406.     INSTEAD OF DELETE AS
  407.         BEGIN
  408.             IF ((SELECT purchaseID FROM deleted WHERE purchaseID % 2 = 0) IS NOT NULL )
  409.                     RAISERROR ('Can not delete from TableWithPK', 11, 1)
  410.             ELSE DELETE FROM FirstSchema.TableWithPK WHERE purchaseID IN (SELECT purchaseID FROM deleted)
  411.         END
  412. GO
  413.  
  414.  
  415. INSERT INTO FirstSchema.TableWithPK VALUES (7, 'Nick');
  416. UPDATE FirstSchema.TableWithPK SET TableWithPK.quantity = 0 WHERE seller = 'Petr'
  417.  
  418. DELETE FirstSchema.TableWithPK WHERE purchaseID = 1
  419. DELETE FirstSchema.TableWithPK WHERE purchaseID = 6
  420. DELETE FirstSchema.TableWithPK WHERE purchaseID = 5
  421. DELETE FirstSchema.TableWithPK WHERE purchaseID = 2
  422. GO
  423.  
  424. --Для представления пункта 2 задания 7 создать триггеры на вставку, удаление и добавление, обеспечивающие
  425. --возможность выполнения операций с данными непосредственно через представление.
  426.  
  427. --CREATE TABLE FirstSchema.TableWithPK
  428. --(
  429. --   purchaseID INT PRIMARY KEY IDENTITY NOT NULL,
  430. --   quantity INT NOT NULL,
  431. --   seller VARCHAR(25) NOT NULL
  432. --)
  433.  
  434. --CREATE TABLE FirstSchema.TableWithFK(
  435. --  productID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  436. --  productName VARCHAR(30) NOT NULL,
  437. --  manufacturer VARCHAR(30) NOT NULL,
  438. --  purchaseID INT NULL,
  439. --        CONSTRAINT configs FOREIGN KEY (purchaseID) REFERENCES FirstSchema.TableWithPK (purchaseID)
  440. --    ON DELETE SET NULL
  441. --)
  442.  
  443.  
  444. --CREATE VIEW FirstSchema.SecondView AS
  445. --SELECT a.purchaseID, a.quantity, a.seller, b.manufacturer, b.productID, b.productName
  446. --FROM FirstSchema.TableWithPK a RIGHT JOIN FirstSchema.TableWithFK b
  447. --    ON a.purchaseID = b.purchaseID
  448. --WITH CHECK OPTION
  449.  
  450. CREATE TRIGGER view_insert_trigger
  451.     ON SecondDB.FirstSchema.SecondView
  452.     INSTEAD OF INSERT
  453.         AS BEGIN
  454.             SELECT * FROM inserted
  455.             INSERT FirstSchema.TableWithPK (quantity, seller)
  456.                 SELECT quantity, seller FROM inserted
  457.             INSERT FirstSchema.TableWithFK (productName, manufacturer, purchaseID)
  458.                 SELECT productName, manufacturer, SCOPE_IDENTITY() FROM inserted
  459. END
  460.  
  461. INSERT INTO FirstSchema.SecondView (quantity, seller, manufacturer, productName) VALUES
  462.     (101, 'Name1', 'Country1', 'Trigger_prod1')
  463. INSERT INTO FirstSchema.SecondView (quantity, seller, manufacturer, productName) VALUES
  464.     (102, 'Name2', 'Country2', 'Trigger_prod2')
  465.  
  466.  
  467. CREATE TRIGGER view_delete_trigger
  468.     ON SecondDB.FirstSchema.SecondView
  469.     INSTEAD OF DELETE
  470.         AS BEGIN
  471.             SELECT * FROM deleted
  472.             RAISERROR ('Can not delete from SecondView', 11, 2)
  473. END
  474.  
  475. DELETE FROM FirstSchema.SecondView
  476.  
  477. CREATE TRIGGER view_update_trigger
  478.     ON SecondDB.FirstSchema.SecondView
  479.     INSTEAD OF UPDATE AS BEGIN
  480.         --IF (UPDATE(quantity) OR UPDATE(seller) OR UPDATE(manufacturer) OR UPDATE(productName))
  481.         --  BEGIN
  482.  
  483.         --END
  484.  
  485.         --pk
  486.         IF (UPDATE(purchaseID) OR UPDATE(productID))
  487.             BEGIN
  488.                 RAISERROR ('Can not update SecondView', 11, 3)
  489.             END
  490.  
  491.         UPDATE FirstSchema.TableWithPK SET quantity = inserted.quantity, seller = inserted.seller
  492.         UPDATE FirstSchema.TableWithFK SET manufacturer = inserted.manufacturer, productName = inserted.productName
  493. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement