INSERT INTO testinsert VALUES(100,100); -- OK
INSERT INTO testinsert VALUES('100',100); -- OK
INSERT INTO testinsert VALUES('100','abc'); -- ouch for COL2 (abc)
INSERT INTO testinsert VALUES(0,100); -- OK
INSERT INTO testinsert VALUES('0',100); -- OK
INSERT INTO testinsert VALUES('abc',100); -- ouch for COL1 (abc)
随着第三次全国人大常委会会议的增加:
INSERT INTO testinsert VALUES(100,100,100); -- OK (all integers)
INSERT INTO testinsert VALUES('100','100',100); -- OK (CAST can accept integers as strings)
INSERT INTO testinsert VALUES('100','100','100'); -- Ouch typeof will consider '100' as a string, not an integer
如果您希望忽略而不是中止(默认设置),则可以使用:-
INSERT OR IGNORE INTO testinsert VALUES('100','abc'); -- insert Skipped - no fail
使用SQLite管理器对上述内容进行了测试。 以下是冲突失败的一个例子:
SQLiteManager: -- OK
INSERT INTO testinsert VALUES('100','abc'); [ CHECK constraint failed: testinsert ]
Exception Name: NS_ERROR_STORAGE_CONSTRAINT
Exception Message: Component returned failure code: 0x80630003 (NS_ERROR_STORAGE_CONSTRAINT) [mozIStorageStatement.execute]
3条答案
按热度按时间p5cysglq1#
您可以使用CHECK约束和typeof()来检查实际数据类型:
q9yhzks02#
我相信你可以使用
CHECK
约束。您还可以使用**
TYPEOF
**函数,例如以下是一些带有结果的示例插入:-
随着第三次全国人大常委会会议的增加:
如果您希望忽略而不是中止(默认设置),则可以使用:-
使用SQLite管理器对上述内容进行了测试。
以下是冲突失败的一个例子:
你不妨看看:-
mspsb9vt3#
从SQLite版本3.37.0开始,可以强制使用STRICT Tables进行数据类型检查:
在CREATE TABLE语句中,如果在结束符“)”之后添加了“Strong”TABLE-OPTION关键字,则严格的类型规则将应用于该表。
您可以将以下数据类型之一用于列定义:
请参阅简化的demo。