MS SQL-Server 2000. Сивохин А.В. - 56 стр.

UptoLike

Составители: 

PRINT ‘Удаление запрещено
ROLLBACK TRANSACTION
END
ELSE
PRINT ‘Удаление разрешено
3. Тестирование триггера :
DELETE FROM authsmall WHERE au_fname = ‘Johnson’
DELETE FROM authsmall WHERE 2*2=5
Задание 2. Создать триггер auth_upd для таблицы authsmall, построенный в первом
задании, который будет разрешать изменение столбца au_id этой таблицы всем, кроме владельца
dbo, выполнив следующие действия:
1. Создание и программирование триггера:
CREATE TRIGGER auth_upd
ON authsmall
FOR UPDATE
AS
SET NOCOUNT ON -- не сообщать о завершении команд;
PRINT ‘Попытка изменения данных в таблице authsmall’
IF (COLUMNS_UPDATE () &1)! = 0 -- 1-й столбец;
PRINT ‘Изменение столбца au_id’
IF (COLUMNS_UPDATE () &2)! = 0 -- 2-й столбец;
PRINT ‘Изменение столбца au_fname’
IF (COLUMNS_UPDATE () &4)! = 0 -- 3-й столбец;
PRINT ‘Изменение столбца au_lname’
IF UPDATE (Phone)
PRINT ‘Изменение столбца phone’
IF ((CURRENT_USER = ‘dbo’) AND
(COLUMNS_UPDATED()&1)! = 0 -- 1-ый стлбец;
BEGIN
PRINT ‘Пользователь dbo не может изменять’ + ‘идентификационный
номер автора
ROLLBACK TRANSACTION
END
2. Тестирование триггера:
UPDATED authsmall SET phone =‘415 986 - 7020’, au_fname = ‘John’
WHERE au_lname = ‘Green’
UPDATED authsmall SET phone =‘913 843 - 7302’, au_id = ‘748-126859’
WHERE au_lname = ‘Smith’
Задание 3. Создать триггер для команд INSERT и UPDATE, запрещающий производить
изменения для автора Billy Geitsi, выполнив действия:
1. Создание и программирование триггера:
CREATE TRIGGER auth_ ins_upd ON authsmall
FOR INSERT, UPDATE
       PRINT ‘Удаление запрещено’
       ROLLBACK TRANSACTION
       END
       ELSE
       PRINT ‘Удаление разрешено’

       3. Тестирование триггера :

       DELETE FROM authsmall WHERE au_fname = ‘Johnson’
       DELETE FROM authsmall WHERE 2*2=5

        Задание 2. Создать триггер auth_upd для таблицы authsmall, построенный в первом
задании, который будет разрешать изменение столбца au_id этой таблицы всем, кроме владельца
dbo, выполнив следующие действия:

       1. Создание и программирование триггера:

       CREATE TRIGGER auth_upd
           ON authsmall
           FOR UPDATE
       AS
           SET NOCOUNT ON -- не сообщать о завершении команд;
           PRINT ‘Попытка изменения данных в таблице authsmall’
           IF (COLUMNS_UPDATE () &1)! = 0 -- 1-й столбец;
                PRINT ‘Изменение столбца au_id’
            IF (COLUMNS_UPDATE () &2)! = 0 -- 2-й столбец;
                PRINT ‘Изменение столбца au_fname’
            IF (COLUMNS_UPDATE () &4)! = 0 -- 3-й столбец;
                PRINT ‘Изменение столбца au_lname’
            IF UPDATE (Phone)
                PRINT ‘Изменение столбца phone’
           IF ((CURRENT_USER = ‘dbo’) AND
                 (COLUMNS_UPDATED()&1)! = 0 -- 1-ый стлбец;
                 BEGIN
                    PRINT ‘Пользователь dbo не может изменять’ + ‘идентификационный
                    номер автора’
                    ROLLBACK TRANSACTION
                 END

       2. Тестирование триггера:

      UPDATED authsmall SET phone =‘415 986 - 7020’, au_fname = ‘John’
         WHERE au_lname = ‘Green’
      UPDATED authsmall SET phone =‘913 843 - 7302’, au_id = ‘748-126859’
         WHERE au_lname = ‘Smith’

       Задание 3. Создать триггер для команд INSERT и UPDATE, запрещающий производить
изменения для автора Billy Geitsi, выполнив действия:

       1. Создание и программирование триггера:

       CREATE TRIGGER auth_ ins_upd ON authsmall
           FOR INSERT, UPDATE