sql - 如何在 sqlite3 中返回自定义错误代码?

标签 sql sqlite

我有一个这样的触发器语句:

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_DONESQLITE_ROWSQLITE_CONSTRAINT。我还发现 TRIGGER 中的 RAISE ABORTSQLITE_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/

相关文章:

mysql - 按 MAX() 值分组?

php - 将两个旧表中的数据插入到新表中

php - sql 查询在 php 中给出错误

iphone - 关闭手机、手机短信应用程序不成功

多用户情况下的 sqlite 与 .mdb

java - Android : "Column is not unique" 的 SQLite 错误

python - 内存sqlite3数据库频繁出现 "OperationalError: unable to open database file"

php - 将 PHP foreach 循环与 SQL foreach 循环结合起来

sql - 未聚合错误的字段需要分组

ruby-on-rails - Rails 3. 嵌套事务。子 block 中的异常