看来,SQLite的,显然是一个“兼容功能”,如果没有匹配的列中发现解析双引号标识符的字符串文字。有没有办法禁止松懈引用规则的源码?
据我所知,它这样做对谁写的SQL不当的人,以及由这些人创造的传统项目向后兼容,但它使调试对于我们这些写在全新的项目,正确的SQL非常困难。
例如,
SELECT * FROM "users" WHERE "usernme" = 'joe';
返回与0行的查询,因为字符串“usernme”不等于字符串“乔的。
这让我挠了挠脑袋,想知道为什么我没有得到乔的行,即使当我知道有一个用户的名字,直到我刻意回溯我的代码,并意识到我遗漏了一个。
是否有任何“严格模式” PRAGMA或API选项执行引用规则,并把所有的双引号字符串作为标识符,这样它会立刻通知我,如果一个拼错?
(请不要告诉我不要引用标识符,如果我不需要,因为任何这样的答案基本上告诉我,为了得到正确的调试,您必须首先编写错误的代码。)
我彻底的测试补丁并不能找到任何不利的影响到正确编写SQL代码。它看起来很稳固。 – Dan