111
Тапсырма 2. Балама кесте үшін тағы бір триггер құрастыру. Ол
тек dbo
иесінен басқа, барлық пайдаланушыларға au_id бағанына өзгеріс енгізуге
рұқсат етеді.
Триггерді құру және бағдарламалау
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
179
FOR INSERT, UPDATE
AS
IF EXISTS (SELECT * FROM authsmall -- inserted;
WHERE au_lname = ‘Geitsi’ -- фамилия;
au_fname = ‘Billy’) -- имя;
BEGIN
PRINT ‘Недопустимо написание кнги’+
112
‘автором Billy Geitsi’
ROLLBACK TRANSACTION
END
2. Триггерді тестілеу:
UPDATE authsmall SET au_lname = ‘Geitsi’,
au_fname = ‘Billy’ WHERE au_lname = ‘Smith’.
Достарыңызбен бөлісу: