请修复我的 Sybase Anywhere SQL 过程。该程序使用一个事务来更新一个球员的薪水,然后用一个事务检查这个球员的薪水增加后球队所有球员的支出是否不超过500,000。 'WydatkiDruzyny()' 是一个内置函数,用于计算球队在球员工资上的总支出。
ALTER PROCEDURE "DBA"."SalaryCap"(@pesel CHAR(11), @poPodwyzce INTEGER,@klucz INTEGER) AS
BEGIN
DECLARE @przedPodwyzka INTEGER
DECLARE @wydatkiKlubu INTEGER
DECLARE @salary INTEGER
SET @salary=500000
SELECT
@wydatkiKlubu = WydatkiKlubu(klucz)
FROM
Druzyna
INNER JOIN Zawodnik ON Druzyna.IdD = Zawodnik.IdD
WHERE
Zawodnik.PESEL = @pesel
SET @przedPodwyzka = (SELECT Zarobki FROM Zawodnik WHERE PESEL = @pesel)
DECLARE @pom INTEGER
SET @po m = ( @poPodwyzce - @przedPodwyzka )
BEGIN TRANSACTION transakcja
UPDATE
Zawodnik
SET
Zarobki = @poPodwyzce
WHERE
PESEL = @pesel
IF ( @wydatkiKlubu + @pom ) > @salary
BEGIN
ROLLBACK TRANSACTION transakcja
RETURN
END
ELSE
COMMIT TRANSACTION transakcja
END
问题是即使开销超过50万,更新还是执行了