Трудно читать код с чужими именами таблиц и столбцов, поэтому я надеюсь, что я понял это правильно (без обид) - хотя обязательно внимательно прочитайте.
Насколько я понимаю ваш код, вы должны быть в состоянии удалить ваши временные переменные и сделать все в трех последующих операторах обновления (обновление разных строк). Я не знаю, что именно не работает, но если после этого все равно не работает, попробуйте выполнить отдельные операторы SQL вручную и проверить результаты.
Обновление pracownik
, уменьшение pensja на 150
, но не ниже 1000
, где id = przelozony (prac_id)
UPDATE pracownik
SET pensja = LEAST( pensja-150, 1000 )
WHERE id = ( SELECT przelozony FROM pracownik where id = PRAC_ID );
Обновление pracownik
, установка некоторых значений и przelozony
.
UPDATE pracownik
SET imie = PR_IMIE,
nazwisko = PR_NAZWISKO,
pensja = PR_PENSJA,
przelozony = CASE WHEN PR_PRZELOZONY > 0 THEN PR_PRZELOZONY ELSE NULL END,
oddzial = PR_ODDZIAL
WHERE id = PRAC_ID;
Обновление pracownik
, если PR_PRZELOZONY > 0
, увеличение pensja
на 15
, но не выше 5000
.
IF(PR_PRZELOZONY > 0) THEN
UPDATE pracownik
SET pensja = GREATEST( pensja + 150, 5000 )
WHERE id = pr_przelozony;
END IF;