У меня есть база данных Oracle и таблица с несколькими ненулевыми столбцами, все со значениями по умолчанию.
Я хотел бы использовать один оператор вставки для любых данных, которые я хочу вставить, и не беспокойтесь, чтобы проверить, являются ли введенные значения нулевыми или нет.
Есть ли способ вернуться к значению столбца по умолчанию при вставке пустого значения?
У меня есть этот код:
<?php
if (!empty($values['not_null_column_with_default_value'])) {
$insert = "
INSERT INTO schema.my_table
( pk_column, other_column, not_null_column_with_default_value)
VALUES
(:pk_column,:other_column,:not_null_column_with_default_value)
";
} else {
$insert = "
INSERT INTO schema.my_table
( pk_column, other_column)
VALUES
(:pk_column,:other_column)
";
}
Итак, я должен опустить столбецполностью, или у меня будет ошибка "попытка вставить ноль, а не нуль-столбец".Конечно, у меня есть несколько обнуляемых столбцов, поэтому оператор вставки кода очень нечитаем, уродлив, и мне просто не нравится этот способ.
Я хотел бы иметь одно утверждение, похожее на:
INSERT INTO schema.my_table
( pk_column, other_column, not_null_column_with_default_value)
VALUES
(:pk_column,:other_column, NVL(:not_null_column_with_default_value, DEFAULT) );
Это, конечно, гипотетический запрос.Знаете ли вы, каким образом я бы достиг этой цели с помощью СУБД Oracle?
РЕДАКТИРОВАТЬ :
Спасибо всем за ответы.Это говорит о том, что не существует «стандартного» способа достичь того, чего я хотел, поэтому я принял лучший ответ IMO: я должен перестать быть умным и придерживаться простого пропуска нулевых значений с помощью автоматически создаваемых операторов.
Не совсем то, что я хотел бы видеть, но нет лучшего выбора.