SET TRUENULLCREATE
SET TRUENULLCREATE ステートメントにより、新規テーブルの作成時に真のヌルのオン/オフを切り替えます。
構文
SET TRUENULLCREATE = <on | off>
備考
この設定が初めて登場したのは Pervasive.SQL 2000 (7.5) でした。デフォルトはオンで、これは、空のフィールドの先頭にヌル インジケーター バイトを付けてテーブルが作成されるようにします。SQL ステートメントによってこれをオフに設定すると、それ以降は、Pervasive.SQL 7 以前のリリースのレガシー ヌルを使用してテーブルが作成されます。レガシー ヌルの動作は、セッションが切断されるまで持続します。新しいセッションでは、設定は再びオンになります。
接続ごとに独自の TRUENULLCREATE 設定を持つため、同一のアプリケーション内であっても、各接続で異なる設定にすることができます。
レガシー ヌルは真のヌルではありませんが、ヌル許容として動作するため、あらゆる列の型に INSERT NULL を実行できます。しかし、値を照会すると、次に示す非ヌルのバイナリ同値のいずれかが返されます。
•0 - Binary 型の場合
•空文字列 - STRING 型および BLOB 型(LVAR、LSTRING などのレガシー型を含む)の場合
したがって、このバイナリ同値を WHERE 句で使用して、特定の値を取得する必要があります。
次の表は、デフォルト値とヌル値を許可する列との相互作用を示しています。
列のタイプ | 列にリテラルのデフォルト値が定義されていない場合に使用するデフォルト値 | リテラル値が定義されている場合のデフォルト値 |
---|
ヌル値を許可 | NULL | 定義どおり |
NOT NULL | エラー-"列にデフォルト値が割り当てられていません。" | 定義どおり |
v7.5 以前のヌル許容 | 列のレガシー ヌル | 定義どおり |
ステートメントで、デフォルト値が定義されている NOT NULL 列に明示的なヌルを挿入しようとすると、エラーが発生して失敗します。挿入を試みた場所でデフォルト値は使用されません。
デフォルト値が定義されている列については、INSERT ステートメントの中で、挿入する列リストからこの列を省略するか、または挿入値の場所に DEFAULT キーワードを使用することで、その値を呼び出すことができます。
テーブル内の列がすべて、ヌル値を許可するかデフォルト値が定義されているかのいずれかである場合は、values 句に DEFAULT VALUES を使用することで、すべてのデフォルト値を含むレコードを挿入できます。一部の列がヌル値を許可していないかデフォルト値が定義されていない場合、または列リストを指定しない場合には、この種の句は使用できません。
BLOB、CLOB、または BINARY データ型に対する DEFAULT VALUES の使用は、現在のところサポートされていません。
例
設定を切り替えて、現在のセッションではレガシー ヌル サポートを使って新規テーブルが作成されるようにするには、次のステートメントを使用します。
SET TRUENULLCREATE=OFF
エンジンをデフォルト設定に戻して、現在のセッションでは真のヌル サポートを使ってテーブルが作成されるようにするには、次のステートメントを使用します。
SET TRUENULLCREATE=ON