如何获取导致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)!