Здравствуйте. Есть такая структура:
ainc |id |price |dost |name |field1 |field2 |field3
-----------------------------------------------------------
1 |78 |232 |1 |qwer |jdfglh |value2 |rghtr
2 |26 |139 |0 |dfwq |hutrh |value2 |gr46g
3 |99 |656 |1 |efew |rhier |value2 |fgdfg
4 |85 |134 |1 |43fd |ergui |value2 |xzvfg
5 |59 |614 |0 |vcrw |hjfue |value2 |dgrhj
ainc
- auto_increment
id
- primary key
Наполняю базу таким запросом:
INSERT INTO db (id,price,dost,name,field1,field2,field3)
VALUES ('65','659', '1','qwery','dfsdd','rgers','zxcdf')
В связи с тем что, у таблицы есть PRIMARY KEY, записи с НЕ уникальным полем ID в БД не попадают: Duplicate entry - Error
Но можно ли обновить некоторые поля, если БД увидела дубль?
Идет запрос к БД, SQL видит что запрос содержит дубль - то есть ID уже есть в базе, и ОБНОВЛЯЕТ строку, например, по колонкам price и fild3 для дублирующей строки (ID).
Премного благодарен за помощь в решении задачи.
Можно для этого есть такая конструкция
INSERT INTO table (val) values (val) on duplicate key update key = key_val
Вам нужен не INSERT INTO, а REPLACE INTO:
REPLACE INTO db (id,price,dost,name,field1,field2,field3)
VALUES (65,659,1,'qwery','dfsdd','rgers','zxcdf')
Если записи нет - она добавится. Если есть - старая удалится, новая вставится.
ID уже есть в базе, и ОБНОВЛЯЕТ строку, например, по колонкам price и fild3 для дублирующей строки (ID).
Если же при наличии дубля надо часть полей оставлять от "старой" записи - то да, только ODKU:
INSERT INTO db (id,price,dost,name,field1,field2,field3)
VALUES (65,659,1,'qwery','dfsdd','rgers','zxcdf')
ON DUPLICATE KEY UPDATE price=659, field3='zxcdf'
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть поток в котором происходит добавние маркеров и послдеющее их обновление
Прочитать код программы и в каждом слове, короче 5-ти символов заменить все символы на звездочкиПуть к программе и название нового файла вписываются...