Скачать презентацию Триггеры SQL Команда создания триггеров CREATE TRIGGER Скачать презентацию Триггеры SQL Команда создания триггеров CREATE TRIGGER

Триггеры SQL.ppt

  • Количество слайдов: 19

Триггеры SQL Триггеры SQL

Команда создания триггеров CREATE TRIGGER <name> ON <table> FOR [INSERT] [, UPDATE] [, DELETE]| Команда создания триггеров CREATE TRIGGER ON

FOR [INSERT] [, UPDATE] [, DELETE]| INSTEAD OF[INSERT] [UPDATE] [DELETE] AS [DECLARE <переменные>]

Триггеры Триггеры

Временные таблицы Команды INSERT DELETE UPDATE Таблицы inserted deleted Временные таблицы Команды INSERT DELETE UPDATE Таблицы inserted deleted

Создание триггера для формирования первичного ключа при занесении нового студента CREATE TRIGGER INS_NEW ON Создание триггера для формирования первичного ключа при занесении нового студента CREATE TRIGGER INS_NEW ON STUDENTS INSTEAD OF INSERT AS DECLARE @NOM INT, @FAM CHAR(20), @NAM CHAR(20), @OTC CHAR(20), @STIP DECIMAL(5, 2) SELECT @NOM=MAX(SNUM) FROM STUDENTS SELECT @FAM=INS. SFAM, @NAM=INS. SNAM, @OTC=INS. SOTCH, @STIP= INS. STIP FROM INSERTED INSERT INTO STUDENTS VALUES (@NOM+1, @FAM, @NAM, @OTC, @STIP)

САМОСТОЯТЕЛЬНО Создать триггер для ввода первичного ключа в таблицу TEACHERS САМОСТОЯТЕЛЬНО Создать триггер для ввода первичного ключа в таблицу TEACHERS

САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_TEA ON TEACHERS INSTEAD OF INSERT AS DECLARE @NOM INT, @FAM САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_TEA ON TEACHERS INSTEAD OF INSERT AS DECLARE @NOM INT, @FAM CHAR(20), @NAM CHAR(20), @OTC CHAR(20) SELECT @NOM=MAX(TNUM) FROM TEACHERS SELECT @FAM=INS. TFAM, @NAM=INS. TNAM, @OTC=INS. TOTCH FROM INSERTED INSERT INTO TEACHERS VALUES (@NOM+1, @FAM, @NAM, @OTCH)

Создание триггера для поддержания ссылочной целостности при удалении студентов CREATE TRIGGER ST_DEL ON STUDENTS Создание триггера для поддержания ссылочной целостности при удалении студентов CREATE TRIGGER ST_DEL ON STUDENTS INSTEAD OF DELETE AS DECLARE @NUM INT SELECT @NUM=DEL. SNUM FROM DELETED DEL IF EXISTS (SELECT * FROM USP WHERE SNUM=@NUM) DELETE FROM USP WHERE SNUM=@NUM DELETE FROM STUDENTS WHERE SNUM=@NUM

САМОСТОЯТЕЛЬНО Создать триггер для NULL удаления первичного ключа из таблицы TEACHERS САМОСТОЯТЕЛЬНО Создать триггер для NULL удаления первичного ключа из таблицы TEACHERS

САМОСТОЯТЕЛЬНО CREATE TRIGGER ST_DEL ON TEACHERS INSTEAD OF DELETE AS DECLARE @NUM INT SELECT САМОСТОЯТЕЛЬНО CREATE TRIGGER ST_DEL ON TEACHERS INSTEAD OF DELETE AS DECLARE @NUM INT SELECT @NUM=DEL. TNUM FROM DELETED DEL IF EXISTS (SELECT * FROM PREDMET WHERE TNUM=@NUM) UPDATE PREDMET TNUM=NULL WHERE TNUM=@NUM DELETE FROM TEACHERS WHERE TNUM=@NUM

Создание триггера для поддержания ссылочной целостности при добавлении нового студента CREATE TRIGGER INS_S ON Создание триггера для поддержания ссылочной целостности при добавлении нового студента CREATE TRIGGER INS_S ON STUDENTS FOR INSERT AS DECLARE @K_M INT, @K_S INT SELECT @K_M=MAX(UNUM) FROM USP SELECT @K_S =INS. SNUM FROM INSERTED INSERT INTO USP (UNUM, SNUM) VALUES (@K_M+1, @K_S)

САМОСТОЯТЕЛЬНО Создать триггер для поддержания ссылочной целостности при добавлении нового преподавателя в таблицу TEACHERS САМОСТОЯТЕЛЬНО Создать триггер для поддержания ссылочной целостности при добавлении нового преподавателя в таблицу TEACHERS

САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_S ON TEACHERS FOR INSERT AS DECLARE @K_T INT, @K_P INT САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_S ON TEACHERS FOR INSERT AS DECLARE @K_T INT, @K_P INT SELECT @K_P=MAX(PNUM) FROM PREDMER SELECT @K_T =INS. TNUM FROM INSERTED INSERT INTO PREDMET (PNUM, TNUM) VALUES (@K_P+1, @K_T)

Создание триггера для проверки правильности изменения поля CREATE TRIGGER Upd_Oc ON USP FOR UPDATE Создание триггера для проверки правильности изменения поля CREATE TRIGGER Upd_Oc ON USP FOR UPDATE AS DECLARE @OC INT, @NOM INT IF UPDATE (OCENKA) BEGIN SELECT @OC=OCENKA, @NOM=UNUM FROM USP IF (@OC>1) AND(@OC<6) UPDATE USP SET OCENKA=@OC WHERE UNUM=@NOM ELSE UPDATE USP SET OCENKA=NULL WHERE UNUM=@NOM END

САМОСТОЯТЕЛЬНО Создать триггер для изменения поля TNUM в таблице PREDMET, с проверкой наличия преподавателя САМОСТОЯТЕЛЬНО Создать триггер для изменения поля TNUM в таблице PREDMET, с проверкой наличия преподавателя с новым номером в таблице TEACHERS, в противном случае TNUM должен быть равен NULL.

САМОСТОЯТЕЛЬНО CREATE TRIGGER Upd_Tea ON predmet FOR UPDATE AS DECLARE @TNUM INT, @NOM INT САМОСТОЯТЕЛЬНО CREATE TRIGGER Upd_Tea ON predmet FOR UPDATE AS DECLARE @TNUM INT, @NOM INT IF UPDATE (TNUM) BEGIN SELECT @TNUM=TNUM, @NOM=PNUM FROM PREDMET IF EXISTS (SELECT * FROM TEACHERS WHERE TNUM=@TNUM) UPDATE PREDMET SET TNUM=@TNUM WHERE PNUM=@NOM ELSE UPDATE PREDMET SET TNUM=NULL WHERE PNUM=@NOM END

Создание триггера для ведения статистики успеваемости студентов. *** требуется использование функции CONVERT CREATE TRIGGER Создание триггера для ведения статистики успеваемости студентов. *** требуется использование функции CONVERT CREATE TRIGGER OC_DAY ON USP FOR INSERT AS IF EXISTS (SELECT * FROM STAT WHERE DAT=GETDATE()) UPDATE STAT SET KOL_VO=KOL_VO+1 WHERE DAT=GETDATE() ELSE INSERT INTO STAT VALUES(1, GETDATE())

САМОСТОЯТЕЛЬНО Создать триггер для подсчета количества предметов на каждом курсе. Результат занести в таблицу САМОСТОЯТЕЛЬНО Создать триггер для подсчета количества предметов на каждом курсе. Результат занести в таблицу STAT_P(kol, cours)

САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_P ON PREDMET FOR INSERT AS DECLARE @K_K INT SELECT @K_K САМОСТОЯТЕЛЬНО CREATE TRIGGER INS_P ON PREDMET FOR INSERT AS DECLARE @K_K INT SELECT @K_K =INS. COURS FROM INSERTED INS IF EXISTS (SELECT * FROM STAT_P WHERE COURS=@K_K) UPDATE STAT SET KOL=KOL+1 WHERE COURS=@K_K ELSE INSERT INTO STAT VALUES(1, @K_K )