Листинг 6.4. Использование ключевого слова IGNORE.


 

Как видно из листинга 6.4, генерации ошибки не происходит, тем не менее новая запись также не добавляется.

При добавлении новой записи с уникальными индексами выбор такого уникального значения может быть непростой задачей. Для того чтобы не осуществлять дополнительный запрос, направленный на выявление максимального значения первичного ключа для генерации нового уникального значения, в MySQL введен механизм его стоматической генерации. Для этого достаточно снабдить первичный ключ --_catalog атрибутом auto_increment (см. главу 5). Тогда при создании новой записи з качестве значения id__catalog достаточно передать null или 0 — поле автоматически получит значение, равное максимальному значению столбца id_cataiog, плюс единица (листинг 6.5).

При вставке оператором insert не обязательно указывать все столбцы. Те столбцы, которые не указаны в списке, получат значение по умолчанию. Так, в листинге 6.6 значение id_catalog не передается оператору insert.

Так как id_catalog по умолчанию принимает значение null, которое вызывает механизм auto_increment, то поле id_catalog автоматически получает значение 5 (максимальное значение 4 плюс 1). Допускается добавление полностью пустых строк, это продемонстрировано в листинге 6.7

Так как текстовое поле name по умолчанию принимает пустую строку, новая запись содержит пустую запись. Значение по умолчанию можно подставить, если передать в качестве значения ключевое слово default (листинг 6.8).

Часто в прикладных программах требуется узнать значение, присвоенное столбцу и снабженное атрибутом auto_increment. Это может потребоваться для того, чтобы использовать сгенерированное значение первичного ключа в качестве вторичного в другой таблице или для каких-то других целей. Только что сгенерированное значение возвращает встроенная функция MySQL last_insert_id(), как это показано в листинге 6.9.

Например, если необходимо, чтобы следующее значение поля id_catalog приняло значение 16, а не 7, можно воспользоваться запросом, представленным в листинге 6.10

Кроме констант, в списке значений expression могут выступать выражения с участием столбцов из списка col_name.

Так, в листинге 6.11 для первой записи поле id_catalog принимает значение 6, а поле name значение 21 (7x3). Ссылаться в выражении можно только на столбцы, расположенные левее, ссылка на правые столбцы дает 0 (в случае столбца id_catalog это ( привело к автоматической генерации нового уникального значения 16 вместо ожидаемых 21).

 

Если при вставке нового значения задействован механизм auto_increment, to воспользоваться вновь сгенерированным значением не удастся (листинг 6.12), так сначала полю id_catalog присваивается значение 0, и лишь после того, как запись добавлена — генерируется новое значение.

Еще одной формой оператора insert является синтаксис с ключевым словом set

INSERT [INTO] tbl SET col_name=expr, ...

Оператор заносит в таблицу tbi новую запись, столбец coi_name в котором получает значение ехрr.

Запрос в листинге 6.13 аналогичен запросу в листинге 6.14

Форма оператора insert с ключевым словом set позволяет более гибко добавлять записи. Если имя столбца после set не встречается, полю присваивается значение по умолчанию.

 

Многострочный оператор INSERT

 

Многострочный оператор insert совпадает по форме с однострочным оператором. В нем используется ключевое слово values, после которого добавляется не один, а несколько списков expression. Так, в листинге 6.15 добавляется сразу пять записей при помощи одного оператора insert.

 

 

 

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

 



Дата добавления: 2020-11-18; просмотров: 367;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.