2009-03-08 11 views

答えて

3

SQLiteはマニフェスト(動的)型を使用します。列の型はガイドのみであり、列のデータ型を変更する必要はありません。 Column Affinityは、静的に型指定されたデータベースとの互換性を提供するためにのみ使用されます。 SQLite documentationから

SQLiteは動的型付けを使用しています。 はデータ型制約を適用しません。任意の列に任意の データを挿入できます。 任意の長さの文字列 を整数列に、浮動小数点 をブール型列に、または を文字列に置くことができます。あなたは、CREATE TABLEコマンド の列に割り当てる データ型は、SQLiteのは、あなたが を好むヒントとして 列の宣言された型を使用して何のデータ その列に入れることができます...

制限するものではありませんその形式の値。したがって、 の例では、列の型が INTEGERで、その列に という文字列を挿入しようとすると、SQLiteは文字列を整数に変換するために を試行します。 できる場合は、代わりに という整数を挿入します。そうでない場合は、文字列を挿入します。

これは、バグではなく機能であると言います。あなたのアプリケーションに問題がある場合は、SQliteがあなたにとって最良の選択ではないかもしれないと思います。

2

アッシュは正しいですが、列の型の類似性が問題を引き起こしている場合(たとえば、数値のような文字列が変換されて不正確に格納されている場合など)は、すべてのデータを一時テーブルに格納し、元のデータをドロップし、適切な定義で再作成し、データを元に戻します。私が知る限り、これはではなく、であると考えられています。 ; ^)

関連する問題