我有一个这样的触发器语句:
CREATE TRIGGER update_customer_address UPDATE OF address ON customers
BEGIN
UPDATE orders SET address = new.address WHERE customer_name = old.name;
-- RAISE ...
END;
END;
编辑:
我想做一个步骤:
int result = sqlite3_step(statement);
我知道 result
返回结果代码,如 SQLITE_DONE
、SQLITE_ROW
和 SQLITE_CONSTRAINT
。我还发现 TRIGGER
中的 RAISE ABORT
将 SQLITE_CONSTRAINT
返回到 result
。
有没有办法让我创建自定义错误代码?我想做类似的事情
int result = sqlite3_step(statement);
// get custom error code here
是否可以在 sqlite 中使用自定义错误代码引发?或者有任何解决方法吗?
最佳答案
您可以使用 RAISE() 函数抛出错误。 您必须使用预定义的错误代码(IGNORE、ABORT、FAIL 或 ROLLBACK)但是您可以添加自定义消息:
CREATE TRIGGER update_customer_address UPDATE OF address ON customers
BEGIN
UPDATE orders SET address = new.address WHERE customer_name = old.name;
SELECT CASE
WHEN ( (SELECT * from orders WHERE address = 'old address!!') IS NOT NULL)
THEN RAISE (FAIL, 'Can still find old address, not everything was updated!')
END;
END;
请注意,RAISE() 仅在出现问题时使用,参见 the doc有关 raise() 行为的更多信息。
关于sql - 如何在 sqlite3 中返回自定义错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701415/