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 ) RETURNENDRETURN
Данный сценарий выполняет действия:
(Отметьте один правильный вариант ответа.)
Варианты ответа
проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются соответствующие строки таблицы Sale, т.к. все они устарели, удаляются клиенты и, в случае неудачи, отменяются все изменения(Верный ответ)
удаляются соответствующие строки таблицы Sale, т.к. все они устарели, в случае неудачи, отменяются все изменения, затем проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются клиенты
удаляются соответствующие строки таблицы Sale, т.к. все они устарели, затем проверяется, имеются ли в таблице Sale прошлогодние заказы удаляемых клиентов, затем удаляются клиенты и, в случае неудачи, отменяются все изменения