12

SQLite 有这个“特性”,而即使你创建一个INTEGERor类型的列REAL,它也允许你在其中插入一个字符串,甚至是一个没有数字的字符串,比如“the quick fox jumped over the lazy dog”

您如何防止在您的项目中发生这种插入?

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

4

2 回答 2

14

CHECK您可以使用约束来实现这一点(请参阅此处的先前答案)。这看起来像

   CREATE TABLE T (
       N   INTEGER CHECK(TYPEOF(N) = 'integer'),
       Str TEXT CHECK(TYPEOF(Str) = 'text'),
       Dt  DATETIME CHECK(JULIANDAY(Dt) IS NOT NULL)
   );
于 2015-04-06T19:03:36.507 回答
1

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

于 2015-04-06T18:11:38.007 回答