0

SQLite データベース、特に UPDATE クエリのデータ検証で奇妙な問題が発生しています。次のクエリを使用すると、実行しようとすると「データ型の不一致」エラーが発生します。フィールド タイプが整数としてマークされているため、これは正しく、予期されたものです。

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

ただし、次の UPDATE クエリも同じ「データ型の不一致」エラーを返すはずですが、そうではありません。次のクエリを完全に正常に実行できます。これにより、INTEGER のみとしてマークされた列の「文字列」データ型になることができます...

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

では、SQL データ型の検証が最初のクエリでは機能しているのに、2 番目のクエリでは機能していない理由を誰か教えてもらえますか?

どうもありがとうサム

4

1 に答える 1

0

私の MySQL の知識では、それREPLACEは ではなく、 . さらに、行が間違ったデータ型で更新され、値がデフォルト値 (整数の場合は 0) に設定されている場合にのみ、データベースが警告を発するように設定されているに違いありません。挿入は失敗し、更新は警告を発します。残念ながら、私は sqlite に詳しくありませんが、どこかでそれほど違いはないと聞いたことがありますか?UPDATEDELETE, THEN INSERT

PS:SHOW WARNINGS;何かあるかどうか試してみてください...

于 2012-10-05T13:28:29.217 に答える