Главная /
Программирование в Microsoft SQL Server 2000 /
CREATE TRIGGER CustomerDelete ON Customer INSTEAD OF DELETE AS SET NOCOUNT ON IF ( EXISTS ( SELECT * FROM DELETED JOIN Sale ON DELETED.CustId = Sale.CustId WHERE DATEDIFF( DAY, SaleDate, CURRENT_TIMESTAMP ) < 365 ) ) BEGIN RAISERROR( 'One or more custo
CREATE TRIGGER CustomerDelete
ON Customer
INSTEAD OF DELETE
AS
SET NOCOUNT ON
IF ( EXISTS (
SELECT *
FROM DELETED JOIN Sale
ON DELETED.CustId = Sale.CustId
WHERE DATEDIFF( DAY, SaleDate, CURRENT_TIMESTAMP ) < 365 ) )
BEGIN
RAISERROR( 'One or more customers have recent sales', 16, 1)
RETURN
END
DELETE
FROM Sale WHERE CustId IN
( SELECT CustId
FROM DELETED )
IF ( @@ERROR > 0 ) BEGIN
ROLLBACK
RAISERROR( 'Could not delete all old sales', 16, 2 )
RETURN
END
DELETE
FROM Customer WHERE CustId IN
( SELECT CustId
FROM DELETED )
IF ( @@ERROR > 0 ) BEGIN
ROLLBACK
RAISERROR( 'Could not delete all old customers', 16, 3 )
RETURN
END
RETURN
Данный сценарий выполняет действия:
вопрос
Правильный ответ:
удаляются соответствующие строки таблицы Sale, т.к. все они устарели, в случае неудачи, отменяются все изменения, затем проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются клиенты
удаляются соответствующие строки таблицы Sale, т.к. все они устарели, затем проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются клиенты и, в случае неудачи, отменяются все изменения
проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются соответствующие строки таблицы Sale, т.к. все они устарели, удаляются клиенты и, в случае неудачи, отменяются все изменения
Сложность вопроса
89
Сложность курса: Программирование в Microsoft SQL Server 2000
83
Оценить вопрос
Комментарии:
Аноним
Если бы не данные решения - я бы не решил c этими тестами интуит.
01 дек 2020
Аноним
Спасибо за решениями по intiut'у.
17 апр 2016
Аноним
Большое спасибо за ответы по интуиту.
16 ноя 2015
Другие ответы на вопросы из темы базы данных интуит.