gpt4 book ai didi

database - DB2 引发应用程序触发器

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:46 25 4
gpt4 key购买 nike

我已经定义了这个触发器

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 "

有什么解决办法吗?

最佳答案

RAISE_APPLICATION_ERROR仅在 pl/sql 上下文中可用。考虑使用 SIGNAL相反。

例如(从有效范围内选择您自己合适的 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

关于database - DB2 引发应用程序触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55607853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com