当前位置:首页 > 数据库 > SQlite

android-获取引起SQLiteConstraintException的约束的名称

如何获取导致SQLiteConstraintException的约束的名称.

在异常上调用toString()只会给我:“错误代码19:约束失败”

而且,没有任何方法可以获取原因.这使得调试我的sql变得相当困难.

解决方法:

从版本3.7.17开始,SQLite在错误消息中显示约束的名称:

sqlite> create table t(x, constraint x_positive check (x>0));
sqlite> insert into t values(-1);
Error: constraint x_positive failed

但是,要过一段时间才能在Android中显示该版本.

同时,您可以用trigger替换约束,该约束可以使用喜欢的任何消息:

CREATE TRIGGER check_x_positive
BEFORE INSERT ON t                -- also UPDATE
FOR EACH ROW
WHEN NEW.x <= 0
BEGIN
    SELECT RAISE(ABORT, 'RED ALERT! database on fire because x <= 0');
END;

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!