Ключевое слово DEFAULT в mysql подготовленных выражениях - PullRequest
0 голосов
/ 29 января 2020

Безопасно ли использовать ключевое слово DEFAULT в mysql подготовленных выражениях типа:

INSERT INTO table (field1, field2, field3) VALUES(?, ?, DEFAULT)

?

У меня длинный список столбцов и я хотел бы использовать ПО УМОЛЧАНИЮ для тех, кого я не предоставляю значение, так:

INSERT INTO table VALUES (?,?,?,DEFAULT,?,?,?,?,DEFAULT,?,?,?,?,?,?,?,?,?,?)

вместо:

INSERT INTO table (field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19,) VALUES (?,?,?,DEFAULT,?,?,?,?,DEFAULT,?,?,?,?,?,?,?,?,?,?)

(Да, я знаю, что могу опустить столбцы, чтобы заполнить их значением по умолчанию, но я думаю, что в этом случае, если столбец не указан, он сместит все параметры, которые заменят? На один или несколько место, заставляя запрос обновлять неправильные поля и вызывая ошибки)

Я не настолько эксперт в отношении рисков НЕ использовать? ссылка на скобки VALUES в запросе вставки, поэтому я боюсь, что подготовленный оператор может быть пригодным для использования или небезопасным.

1 Ответ

1 голос
/ 29 января 2020

Использование значения DEFAULT внутри подготовленного оператора - единственный способ вставить значение по умолчанию, поскольку вы не можете связать значение по умолчанию.

Предположим, у вас есть столбец, который имеет значение по умолчанию, но также допускаются значения NULL:

CREATE TABLE t1 (a INT, b INT, c INT DEFAULT 4);

Если вы не используете MariaDB (где default поддерживается в связывании с использованием индикаторов), вы можете вставлять данные, используя DEFAULT, только если для столбца * 1008 нет доступных значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...