【发布时间】:2012-10-05 13:05:24
【问题描述】:
我在使用 SQLite 数据库时遇到了一个奇怪的问题,特别是对 UPDATE 查询的数据验证。所以让我开始吧,如果我使用以下查询,当我尝试运行它时会出现“数据类型不匹配”错误。这是正确且符合预期的,因为字段类型被标记为整数。
INSERT OR REPLACE INTO Table ('Column') VALUES ('shouldFail')
但是,人们也希望以下 UPDATE 查询应该返回相同的“数据类型不匹配”错误,但事实并非如此。我可以很好地运行以下查询,这允许我在标记为仅 INTEGER 的列中得到一个“字符串”数据类型......
UPDATE Table SET 'Column'='shouldFail' WHERE SecondColumn = 'Some value'
那么谁能告诉我为什么 SQL 数据类型验证对第一个查询有效,而对第二个查询无效?
非常感谢 山姆
【问题讨论】:
-
对我来说,这两种情况都没有抛出任何错误。看看sqlfiddle.com/#!5/71360/2
-
Table是如何声明的?任何触发器或检查? (你应该使用Column而不是'Column'。) -
对不起,我给出的例子是一个简单的例子,我实际上正在处理几列,所以我使用('column','column2'等)......表格中的问题列就在
CREATE TABLE "Table" ("Column" INTEGER NOT NULL)之内