Как вставить данные, если их нет, обновить? - PullRequest
0 голосов
/ 27 июня 2018

Я хочу обновить строку, если она существует в таблице bag, иначе вставить новую строку

эти типы столбцов, которые я использовал в скатерти

car_name : varchar
p_id : int
quantity : int
price_one_piece : int

Я делаю car_name и p_id в качестве основного (составной ключ)

Я пишу этот код в подпрограмме MySQL в xampp, и он сохраняет в xampp без ошибок, но когда я пытаюсь выполнить его в xampp, он выдает ошибку, которая говорит

Следующий запрос не выполнен: "SET @ p0 = 'mohamed'; SET @ p1 = '1'; SET @ p2 = '1'; SET @ p3 = '1'; CALL bag_insert (@ p0, @ p1, @ p2, @ p3); " MySQL сказал:

#1062 - Duplicate entry 'car_name-1' for key 'PRIMARY'

Код:

IF EXISTS(SELECT * FROM bag WHERE p_id = p_id and `car_name`= car_name)THEN 
UPDATE bag set`car_name`='car_name',`p_id`=p_id,`quantity`=quantity,`price_one_piece`=price_one_piece WHERE `p_id`=p_id;

ELSE 
INSERT INTO bag (car_name,p_id,quantity,price_one_piece) VALUES (car_name,p_id,quantity,price_one_piece); 
END IF

1 Ответ

0 голосов
/ 30 июня 2018

Я решил проблему, используя

> replace INSERT INTO bag (car_name,p_id,quantity,price_one_piece)
> VALUES (car_name,p_id,quantity,price_one_piece);

Я нашел решение в https://chartio.com/resources/tutorials/how-to-insert-if-row-does-not-exist-upsert-in-mysql/

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