Главная /
Программирование в 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
содержит строки в том случае, когда инструкция DELETE
или UPDATE
обработала хотя бы одну строку. Для инструкции UPDATE
таблица DELETE
содержит обновленные строки со старыми значениями, а таблица DELETED
содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE
и UPDATE
вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE
)
временная таблица
INSERTED
содержит строки в том случае, когда инструкция INSERT
или UPDATE
обработала хотя бы одну строку. А временная таблица DELETED
содержит строки в том случае, когда инструкция DELETE
или UPDATE
обработала хотя бы одну строку. Для инструкции UPDATE
таблица DELETE
содержит обновленные строки со старыми значениями, а таблица INSERTED
содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE
и UPDATE
вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE
)
временная таблица
DELETED
содержит строки в том случае, когда инструкция INSERT
или UPDATE
обработала хотя бы одну строку. А временная таблица INSERTED
содержит строки в том случае, когда инструкция UPDATE
обработала ВСЕ строки. Для инструкции UPDATE
таблица DELETE
содержит обновленные строки со старыми значениями, а таблица DELETED
содержит те же строки с новыми значениями. В приведенном примере учтена еще одна особенность триггеров: триггеры операций DELETE
и UPDATE
вызываются даже в том случае, если операция не удалила или не обновила ни одной строки (потому что не нашлось строк, соответствующих условию WHERE
) Сложность вопроса
24
Сложность курса: Программирование в Microsoft SQL Server 2000
83
Оценить вопрос
Комментарии:
Аноним
Я завалил сессию, какого рожна я не нашёл данный сайт с ответами интуит прежде
29 май 2018
Аноним
Зачёт всё. Иду в клуб отмечать зачёт интуит
20 фев 2018
Другие ответы на вопросы из темы базы данных интуит.