如何避免在SQLite表中插入错误的数据类型?

时间:2015-04-06 18:04:14

标签: debugging error-handling sqlite data-consistency

SQLite有"feature",而即使你创建了INTEGERREAL类型的列,它也允许你在其中插入一个字符串,即使是一个没有数字的字符串,喜欢“快速狐狸跳过懒狗”

如何防止在项目中发生此类插入?

我的意思是,当我的代码出现导致这种插入或更新的错误时,我希望程序发出错误,所以我可以调试它,而不是简单地在我的数据库中静默插入垃圾。

2 个答案:

答案 0 :(得分:7)

您可以使用CHECK约束来实现此目的(请参阅previous answer here)。这看起来像

   CREATE TABLE T (
       N   INTEGER CHECK(TYPEOF(N) = 'integer'),
       Str TEXT CHECK(TYPEOF(Str) = 'text'),
       Dt  DATETIME CHECK(JULIANDAY(Dt) IS NOT NULL)
   );

答案 1 :(得分:1)

更好更安全的方法是编写一个验证用户输入的函数(isNumeric,isString等)......