Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Что не верно?

Добавьте новый товар в таблицу Goods с именем «Table» и типом «equipment».
В качестве первичного ключа (good_id) укажите количество записей в таблице + 1.

INSERT INTO Goods (good_id, good_name, type)
VALUES ((SELECT COUNT(*) FROM Goods) + 1, 'Table', 'equipment');
пишет что не правильно
Выдает
ER_UPDATE_TABLE_USED: You can't specify target table 'Goods' for update in FROM clause

По дате
По рейтингу
Аватар пользователя
Новичок

Это не ошибка, это ограничение MySQL, описанное в официальной документации (раздел 13.2.15.12 Restrictions on Subqueries):

В MySQL нельзя изменять данные и одновременно делать выборку из той же таблицы в подзапросе. Рекомендуется использовать вложенный подзапрос:

1
 INSERT INTO Goods (good_id, good_name, type) VALUES ((SELECT * FROM (SELECT COUNT(*) FROM Goods) AS t) + 1, 'Table', 'equipment'); 
Аватар пользователя
Ученик

INSERT INTO Goods
SET good_id = (SELECT COUNT(*)+1 FROM Goods AS a),
good_name = 'Table',
type = (SELECT good_type_id FROM GoodTypes WHERE good_type_name='equipment')

Аватар пользователя
Ученик

Решение:

1234567891011
 INSERT INTO Goods  (good_id, good_name, type) 
 
VALUE ((SELECT COUNT(*)+1 FROM Goods AS a),  
 
'Table',  
 
(SELECT good_type_id FROM GoodTypes AS b WHERE good_type_name ='equipment'));  
 
  
 
SELECT * FROM Goods 
Аватар пользователя
Искусственный Интеллект

Наверное, от вас хотят, чтобы вы сами узнали число записей в таблице и вписали его в запрос числом.

Есть еще одна проблема: в Goods поле type имеет тип int.
Поэтому вы не можете вписать в него строку 'equipment'.

Вместо этого вам нужно сперва завести строчку в GoodTypes и туда вписать айдишник и наименование. А уже потом добавлять в Goods строчку с type, равным айдишнику добавленного вами GoodType.