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



SQLite有这个"功能",而即使当您创建类型为INTEGERREAL的列时,它也允许您在其中插入一个字符串,甚至是一个没有数字的字符串,比如"快狐狸跳过懒狗"。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新