Создание триггеров и хранимых процедур с использованием средства СУБД SQL Server и языковых конструкций Transact-SQL, страница 2

      SET tbl_requests.date_time=CONVERT(datetime, 'Jun 30 '+CONVERT(char, datepart(year, GetDate())))

      WHERE

            EXISTS(

            SELECT * FROM INSERTED WHERE (CONVERT(int, datepart(month, INSERTED.date_time))>6)  AND (datepart(year, INSERTED.date_time)=datepart(year, GetDate()))AND (INSERTED.request_id=tbl_requests.request_id))

3) Создать триггер запрещающий изменять количество поставок, если новая стоимость не превышает 5000.

CREATE TRIGGER trigger3 ON [dbo].[tbl_delivery]

FOR UPDATE

AS

      IF EXISTS(

      SELECT * FROM tbl_item INNER JOIN INSERTED ON tbl_item.model_id=INSERTED.model_id

      WHERE quantity*price<=5000)

BEGIN

      ROLLBACK TRANSACTION;

END;

4) Создать триггер, который при изменении Цены контролирует, чтобы разница между новой и старой суммой поставок не превышал 300, в противном случае действие отменяется.

CREATE TRIGGER price_limit ON [dbo].[tbl_item]

FOR UPDATE

AS

      IF EXISTS(

      SELECT    SUM(tbl_delivery.quantity *ABS(INSERTED.price-DELETED.price))

      FROM         tbl_delivery INNER JOIN

            INSERTED ON tbl_delivery.model_id = INSERTED.model_id INNER JOIN

            tbl_requests ON tbl_delivery.request_id = tbl_requests.request_id INNER JOIN

            DELETED ON DELETED.model_id = INSERTED.model_id

      GROUP BY INSERTED.name, tbl_requests.requester

      HAVING SUM(tbl_delivery.quantity *ABS(INSERTED.price-DELETED.price))>300