Главная /
Программирование в Microsoft SQL Server 2000 /
CREATE TRIGGER TrackCustomerUpdates ON AppDta.dbo.Customer FOR INSERT, UPDATE, DELETE AS DECLARE @InsertedCount INT DECLARE @DeletedCount INT SET @InsertedCount = ( SELECT COUNT (*) FROM INSERTED ) SET @DeletedCount = ( SELECT COUNT(*) FROM DELETED ) IF (
CREATE TRIGGER TrackCustomerUpdates
ON AppDta.dbo.Customer
FOR INSERT, UPDATE, DELETE
AS
DECLARE @InsertedCount INT
DECLARE @DeletedCount INT
SET @InsertedCount = ( SELECT COUNT (*) FROM INSERTED )
SET @DeletedCount = ( SELECT COUNT(*) FROM DELETED )
IF ( @InsertedCount > 0 ) BEGIN
INSERT INTO AppDta.dbo.CustUpdLog
( CustId, Action, UpdUser, UpdDateTime )
SELECT CustId,
CASE
WHEN ( @DeletedCount > 0 ) THEN 'Update'
ELSE 'Insert'
END,
CURRENT_USER, CURRENT_TIMESTAMP
FROM INSERTED
END
ELSE IF ( @DeletedCount > 0 ) BEGIN
INSERT INTO AppDta.dbo.CustUpdLog ( CustId, Action, UpdUser, UpdDateTime )
SELECT CustId, 'Delete', CURRENT_USER, CURRENT_TIMESTAMP
FROM DELETED
END
Данный сценарий выполняет действия:
вопрос
Правильный ответ:
временная таблица
DELETED содержит строки в том случае, когда инструкция INSERT или UPDATE обработала хотя бы одну строку. А временная таблица INSERTED содержит строки в том случае, когда инструкция UPDATE обработала ВСЕ строки. Для инструкции UPDATE таблица DELETE содержит обновленные строки со старыми значениями, а таблица DELETED содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE и UPDATE вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE)
временная таблица
DELETED содержит строки в том случае, когда инструкция INSERT или UPDATE обработала хотя бы одну строку. А временная таблица INSERTED содержит строки в том случае, когда инструкция DELETE или UPDATE обработала хотя бы одну строку. Для инструкции UPDATE таблица DELETE содержит обновленные строки со старыми значениями, а таблица DELETED содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE и UPDATE вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE)
временная таблица
INSERTED содержит строки в том случае, когда инструкция INSERT или UPDATE обработала хотя бы одну строку. А временная таблица DELETED содержит строки в том случае, когда инструкция DELETE или UPDATE обработала хотя бы одну строку. Для инструкции UPDATE таблица DELETE содержит обновленные строки со старыми значениями, а таблица INSERTED содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE и UPDATE вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE) Сложность вопроса
54
Сложность курса: Программирование в Microsoft SQL Server 2000
83
Оценить вопрос
Комментарии:
Аноним
Зачёт в студне отлично. Бегу в бар отмечать зачёт по тестам
03 янв 2020
Аноним
Зачёт в студне отлично. Иду выпивать отмечать отлично в зачётке по интуит
12 июн 2019
Аноним
спасибо
14 мар 2019
Другие ответы на вопросы из темы базы данных интуит.