Ошибка 1364 поле не имеет значения по умолчанию при выполнении простой вставки с соединением

#mysql #mysql-workbench

Вопрос:

У меня есть две простые таблицы, поле «ИДЕНТИФИКАТОР» является первичным ключом в обеих. Я хочу вставить поле таблицы 2 «Расчетный размер» в поле таблицы 1 «Размер» с помощью внутреннего соединения по «Идентификатору».

Таблица 1:

ID Размер
1
2

Таблица 2:

ID Вычисленный размер
2 S

Ожидаемый результат для таблицы 1:

ID Размер
1
2 S

Вот мой вопрос:

 insert into Table1 (Calculated_size)
select Size from Table2
inner join Table1
on Table2.ID = Table1.ID;
 

при выполнении он выдает ошибку 1364: поле «ИДЕНТИФИКАТОР» не имеет значения по умолчанию. Почему?

Я попытался отключить STRICT_TRANS_TABLES в режиме SQL, но это не возымело никакого эффекта.

Я использую MySQL Workbench 8.0.15 и MySQL версии 5.7.25-журнал

Заранее спасибо

Ответ №1:

Ты хочешь update , а не insert :

 update table1 t1 join
       table2 t2
       on t1.id = t2iid
    set t1.Calculated_size = t2.size;
 

insert вставляет новые строки в таблицу-не упомянутые столбцы имеют значения по умолчанию. update обновляет значения в существующих строках.

Комментарии:

1. Большое вам спасибо, это сработало