Технологиялары



Pdf көрінісі
бет49/57
Дата28.07.2023
өлшемі2,79 Mb.
#104886
1   ...   45   46   47   48   49   50   51   52   ...   57
Байланысты:
База данных

Практикалық 
жұмыс 
№11. 
ТРИГГЕРЛЕРДІ 
ҚҰРУ, 
БАҒДАРЛАМАЛАУ ЖӘНЕ БАСҚАРУ 
Мақсаты: Transact-SQL тілінің командаларының синтаксисі және 
семантикасы оларды құру, өзгерту, атын өзгерту, бағдарламалау және жою 
үшін, сондай-ақ оларды жобалау, кодтау және өңдеу кезінде дағдыларды игеру, 
триггерлер туралы ақпарат алу үшін сақталатын рәсімдерді пайдалану арқылы 
үйрету. 
Жұмысты орындау барысы 
Тапсырма 1. Қандай да бір кестеге балама көшірме кестені құрастыру және
жаңа кестеге триггерді бағдарламалау, ол өшіру әрекеттерін және өшірілген 
жол саны туралы ақпаратты шығарады, келесі әрекеттерді орындау арқылы: 
Сәйкес 2-3 бағандары бар балама кестені құру және ол кесте жазбаларын 
бастапқы кестеден алу.
Мысалы: authors кестесіне балама кесте authsmall құру.auth_del триггер 
құрылған. Authsmall кестесіндегі құрылған au_id, au_fname, au_lname, phone 
бағандары. 
SELECT au_id, au_fname, au_lname, phone 
INTO authsmoll 
FROM authors 
PRINT ‘Содержимое таблицы authsmoll:’ 
SELECT * FROM authsmall 
2. Триггерді құру және бағдарламалау: 
CREATE TRIGGER auth_del 
ON authsmall 
FOR DELETE 
AS 
PRINT ‘Попытка удаления’ + STR (@@ POWCOUNT)+ 
178 
‘строк в таблице authsmall’ 
PRINT ‘Пользователь’ + CURRENT_USER 
IF CURRENT_USER <> ‘dbo’ 
BEGIN 
PRINT ‘Удаление запрещено’ 
ROLLBACK TRANSACTION 
END 
ELSE 
PRINT ‘Удаление разрешено’ 
3. Триггерді тесттілеу : 
DELETE FROM authsmall WHERE au_fname = ‘Johnson’ 
DELETE FROM authsmall WHERE 2*2=5 


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’. 


Достарыңызбен бөлісу:
1   ...   45   46   47   48   49   50   51   52   ...   57




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет