0

我在使用 SQLite 数据库时遇到了一个奇怪的问题,特别是对 UPDATE 查询的数据验证。所以让我开始吧,如果我使用以下查询,当我尝试运行它时会出现“数据类型不匹配”错误。这是正确的和预期的,因为字段类型被标记为整数。

INSERT OR REPLACE INTO Table ('Column') VALUES ('shouldFail')

但是,人们也期望以下 UPDATE 查询应该返回相同的“数据类型不匹配”错误,但事实并非如此。我可以很好地运行以下查询,这使我可以在仅标记为 INTEGER 的列中得到一个“字符串”数据类型......

UPDATE Table SET 'Column'='shouldFail' WHERE SecondColumn = 'Some value'

那么谁能告诉我为什么 SQL 数据类型验证在第一个查询上有效,而在第二个查询上无效?

非常感谢山姆

4

1 回答 1

0

以我的 MySQL 知识,我会说这REPLACE不是. 此外,我敢打赌,当使用错误的数据类型更新行并且值设置为默认值(整数为 0)时,您的数据库设置为仅发出警告。插入失败,更新引发警告。不幸的是,我对 sqlite 不是很熟悉,但我在某处听说它们并没有那么不同?UPDATEDELETE, THEN INSERT

PS:试试看SHOW WARNINGS;有没有什么...

于 2012-10-05T13:28:29.217 回答