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

UptoLike

Задание 1.7.3. Создать триггер для команд INSERT и UPDATE, запрещающий
производить изменения для автора Billy Geitsi.
Создание и программирование триггера можно выполнить следующим образом:
CREATE TRIGGER auth_ ins_upd ON authsmall
FOR INSERT, UPDATE
AS
IF EXISTS (SELECT * FROM authsmall
WHERE au_lname = ‘Geitsi’ AND au_fname = ‘Billy’)
BEGIN
PRINT ‘Недопустимо написание кнги’ + ‘автором Billy Geitsi’
ROLLBACK TRANSACTION
END
Для тестирования триггера можно попытаться выполнить команды
модификации строк из таблицы и проверить полученные результаты.
UPDATE authsmall SET au_lname = ‘Geitsi’,
au_fname = ‘Billy’ WHERE au_lname = ‘Smith’.
1.8. Создание транзакций
Задание 1.8.1. Создать вложенные
транзакции. Для этого можно выполнить
следующие команды:
CREATE TABLE #aaa (cola int) -- 0-й уровень
BEGIN TRAN -- 1-й уровень
INSERT INTO #aaa VALUES (111)
BEGIN TRAN -- 2-й уровень
INSERT INTO #aaa VALUES (222)
BEGIN TRAN -- 3-й уровень
INSERT INTO #aaa VALUES (333)
SELECT * FROM #aaa
SELECT ‘Вложенность транзакций’, @@TRANCOUNT
ROLLBACK TRAN
SELECT * FROM #aaa -- откат на 0-й уровень
SELECT ‘Вложенность транзакций’, @@TRANCOUNT
    Задание 1.7.3. Создать триггер для команд INSERT и UPDATE, запрещающий
производить изменения для автора Billy Geitsi.
    Создание и программирование триггера можно выполнить следующим образом:
    CREATE TRIGGER auth_ ins_upd ON authsmall
    FOR INSERT, UPDATE
    AS
    IF EXISTS (SELECT * FROM authsmall
    WHERE au_lname = ‘Geitsi’ AND au_fname = ‘Billy’)
    BEGIN
     PRINT ‘Недопустимо написание кнги’ + ‘автором Billy Geitsi’
     ROLLBACK TRANSACTION
    END


    Для   тестирования    триггера    можно      попытаться   выполнить   команды
модификации строк из таблицы и проверить полученные результаты.
    UPDATE authsmall SET au_lname = ‘Geitsi’,
    au_fname = ‘Billy’ WHERE au_lname = ‘Smith’.


                              1.8. Создание транзакций
    Задание 1.8.1. Создать вложенные транзакции. Для этого можно выполнить
следующие команды:
    CREATE TABLE #aaa (cola int)  -- 0-й уровень
    BEGIN TRAN                    -- 1-й уровень
    INSERT INTO #aaa VALUES (111)
    BEGIN TRAN                    -- 2-й уровень
    INSERT INTO #aaa VALUES (222)
    BEGIN TRAN                    -- 3-й уровень
    INSERT INTO #aaa VALUES (333)
    SELECT * FROM #aaa
    SELECT ‘Вложенность транзакций’, @@TRANCOUNT
    ROLLBACK TRAN
    SELECT * FROM #aaa            -- откат на 0-й уровень
    SELECT ‘Вложенность транзакций’, @@TRANCOUNT