Разработка и сопровождение баз данных в среде СУБД MS SQL Server 2000. Сивохин А.В - 111 стр.

UptoLike

ELSE
PRINT ‘Удаление разрешено
Для тестирования триггера можно попытаться выполнить команды удаления
строк из таблицы и проверить полученные результаты.
DELETE FROM AUTHSMALL WHERE AU_FNAME = ‘JOHNSON’
DELETE FROM authsmall WHERE 2*2=5
Задание 1.7.2. Создать триггер auth_upd для таблицы authsmall, построенный в
первом задании, который будет разрешать изменение столбца au_id этой таблицы
всем, кроме владельца dbo.
Создание и программирование триггера можно выполнить следующим образом:
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
Для тестирования триггера можно попытаться выполнить команды
модификации строк из таблицы и проверить полученные результаты.
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’
    ELSE
     PRINT ‘Удаление разрешено’
    Для тестирования триггера можно попытаться выполнить команды удаления
строк из таблицы и проверить полученные результаты.

    DELETE FROM AUTHSMALL WHERE AU_FNAME = ‘JOHNSON’
    DELETE FROM authsmall WHERE 2*2=5

    Задание 1.7.2. Создать триггер auth_upd для таблицы authsmall, построенный в
первом задании, который будет разрешать изменение столбца au_id этой таблицы
всем, кроме владельца dbo.
    Создание и программирование триггера можно выполнить следующим образом:
    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

    Для   тестирования       триггера   можно   попытаться   выполнить   команды
модификации строк из таблицы и проверить полученные результаты.

    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’