如何获取导致SQLiteConstraintException的约束名称。
在异常上调用toString()只会给我:“错误代码19:约束失败”
并且异常中没有方法可以获得原因。这使我很难调试我的SQL。
答案 0 :(得分:2)
从版本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;