Триггер приложения повышения DB2

Я определил этот триггер

CREATE TRIGGER actualizarSaldoRetirada
BEFORE INSERT ON Retirada
REFERENCING NEW AS N
FOR EACH ROW MODE DB2SQL
BEGIN
    IF (SELECT Saldo FROM Cuenta WHERE IBAN = N.Cuenta_IBAN) - N.Cantidad >= 0 THEN
        UPDATE Cuenta SET Saldo = Saldo - N.Cantidad WHERE IBAN = N.Cuenta_IBAN;
    ELSE
        RAISE_APPLICATION_ERROR(-20000, 'El saldo de la cuenta no puede ser negativo');
    END IF;
END@

Но db2 возвращает следующую ошибку

An unexpected token "RAISE_APPLICATION_ERROR" was found following ".Cuenta_IBAN; ELSE "

Любые идеи, чтобы решить эту проблему?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
0
154
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

RAISE_APPLICATION_ERROR доступен только в контексте pl/sql. Вместо этого рассмотрите возможность использования СИГНАЛ.

Например (выберите собственное подходящее значение SQLSTATE из допустимого диапазона):

CREATE TRIGGER actualizarSaldoRetirada
BEFORE INSERT ON Retirada
REFERENCING NEW AS N
FOR EACH ROW MODE DB2SQL
BEGIN 
    IF (select saldo from cuenta where iban = N.cuenta_iban  ) - N.Cantidad >= 0 THEN
        UPDATE Cuenta SET Saldo = Saldo - N.Cantidad WHERE IBAN = N.Cuenta_IBAN;
    ELSE
        SIGNAL SQLSTATE '75002' set message_text= 'El saldo de la cuenta no puede ser negativo';
    END IF;
END

Другие вопросы по теме