データベースレコードへのnull値の挿入
質問
フィールドにnull値を挿入するにはどのようにすればよいですか?
nullを挿入しようとすると0になります。
回答
OutSystemsプラットフォームでは、常にビルトイン型のデフォルト値を想定しています。
アトリビュートが外部キーである場合を除き、データベースを作成または更新するビルトインアクションによってデータベースに値が書き込まれます。制約に関する問題を避けるため、外部キーが定義されていない場合はnullとして保存されます。しかし、未定義の小数は0として書き込まれます。
データベースにnullを保存するには、SQLノードを使用します。異なるDBMSに十分対応できる汎用のコードを作成し、クエリ内にビジネスロジックを含めるのを避けることができます。
以下の例では、SQLノードに2つの入力があります。ActivityNotesはテキスト入力で、Expand Inlineプロパティがyesに定義されています。そのため、ActivityNotes入力の値はクエリに直接挿入されます。
ActivityNodesクエリパラメータにデータを渡すため、値について以下を確認します。
-
空の場合、文字列「null」を渡します。
-
それ以外の場合、SQLとしてエンコードされた値を渡します。
Expand InlineによるクエリパラメータへのSQLインジェクションを避けるには、EncodeSql()を使用します。
このように、異なるDBMSに十分対応できる汎用のコードを作成すると、クエリ内にビジネスロジックを含めるのを避けることができます。
追加情報:
各型のデフォルト値を定義しています。