Spec-Zone.ru › MariaDB

ВСТАВКА — Значения по умолчанию и дубликаты

Значения по умолчанию

Если SQL_MODE содержит STRICT_TRANS_TABLES и вы вставляете в транзакционную таблицу (например, InnoDB), или если SQL_MODE содержит STRICT_ALL_TABLES, все NOT NULL столбцы, у которых нет DEFAULT значения (и которые не являются AUTO_INCREMENT), должны быть явно указаны в INSERT операторах. В противном случае будет выдано сообщение об ошибке, подобное этому:

ERROR 1364 (HY000): Field 'col' doesn't have a default value

Во всех остальных случаях, если NOT NULL столбец без DEFAULT значения не указан, будет вставлено пустое значение (например, 0 для INTEGER столбцов и '' для CHAR столбцов). См. NULL-значения в MariaDB: Вставка для примеров.

Если NOT NULL столбец, имеющий DEFAULT значение, не указан, будет вставлено NULL.

Если NULL столбец, имеющий DEFAULT значение, не указан, будет вставлено его значение по умолчанию. Также можно явно задать значение по умолчанию, используя ключевое слово DEFAULT или функцию DEFAULT().

Если используется ключевое слово DEFAULT, но столбец не имеет DEFAULT значения, будет выдано сообщение об ошибке, подобное этому:

ERROR 1364 (HY000): Field 'col' doesn't have a default value

Дублирующие значения

По умолчанию, если вы пытаетесь вставить дублированную строку, и существует UNIQUE индекс, INSERT прекращает выполнение и выдаёт ошибку, похожую на эту:

ERROR 1062 (23000): Duplicate entry 'dup_value' for key 'col'

Для обработки дубликатов можно использовать предложение IGNORE, INSERT ON DUPLICATE KEY UPDATE или оператор REPLACE. Обратите внимание, что опции IGNORE и DELAYED игнорируются при использовании ON DUPLICATE KEY UPDATE.

См. также

  • ВСТАВКА
  • ВСТАВКА DELAYED
  • ВСТАВКА ВЫБОР
  • HIGH_PRIORITY и LOW_PRIORITY
  • Конкурентные вставки
  • ВСТАВКА IGNORE
  • ВСТАВКА ON DUPLICATE KEY UPDATE
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/insert-default-duplicate-values/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API