Я получил эту хранимую процедуру:
CREATE PROCEDURE getManagerSalary
(
@Emp_id INT,
@ManagerSalary MONEY OUTPUT
)
AS
SELECT @ManagerSalary = es.Salary
FROM [outdoorparadise].[dbo].[Employee] AS e
INNER JOIN
[outdoorparadise].[dbo].[Employee] AS m
ON e.Manager_id = m.Emp_id
INNER JOIN
[outdoorparadise].[dbo].[Employee_staff] AS es
ON e.Manager_id = es.Emp_staff_code
WHERE e.Emp_id = @Emp_id;
Я получил этот триггер:
CREATE TRIGGER checkSalary ON Employee_staff
AFTER UPDATE
AS
DECLARE
@Emp_id INT,
@NewSalary MONEY,
@ManagerSalary MONEY;
SELECT @NewSalary = Salary
FROM inserted;
SELECT @Emp_id = Emp_staff_code
FROM inserted;
EXEC getManagerSalary @Emp_id = @Emp_id,
@ManagerSalary = @ManagerSalary OUTPUT;
IF @NewSalary > @ManagerSalary
BEGIN
RAISERROR 60000 'Salary cannot be higher than the salary of the manager!'
ROLLBACK TRANSACTION;
END
ELSE
COMMIT TRANSACTION;
Когда я обновляю зарплату до значения, превышающего зарплату менеджера, я получаю ошибку повышения + эта ошибка: транзакция завершилась в триггере. Пакет был прерван.
Когда я пытаюсь обновить зарплату до значения ниже зарплаты менеджера, я все равно получаю следующее: транзакция завершилась в триггере. Пакет был прерван.
Может кто-нибудь сказать, пожалуйста, как я могу решить эту проблему?
Я искал, но ничего не смог найти.
Спасибо,
Ryuken
PS: Это мой первый пост, может быть, я неправильно вставил код, поэтому извините.