Задавайте вопросы, мы ответим
Вы не зашли.
Таблица (users):
id
list_id
code
name
phone
UNIQUE KEY `un_phone` (`list_id`,`code`)
Задача в следующем:
Импорт записей людей с конт. данными.
INSERT INTO `users` (`list_id`,`code`,`name`,`phone`) VALUES (val_1),(val_2),(val_n) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `phone` = VALUES(`phone`)
В случае дублирования ключа и обновлении записи, если поле phone пустое данные обновлять, если поле уже имеет значение, необходимо выполнить проверку и в случае если новый телефон не совпадает с предыдущим не обновлять данные и вернуть порядковый номер вставляемой записи.
На сколько я понимаю, данную процедуру можно выполнить с помощью хранимой функции??
Неактивен
Tartyga написал:
На сколько я понимаю, данную процедуру можно выполнить с помощью хранимой функции??
Можно.
Неактивен
vasya написал:
Tartyga написал:
На сколько я понимаю, данную процедуру можно выполнить с помощью хранимой функции??
Можно.
Как? Кэп!
Неактивен
Подскажите в какую сторону рыть!)
Добавлять записи в цикле не приемлемо, слишком много запросов получится.
Необходимо получить результаты выполнения запроса.
На выходе должен получится порядковый номер записи и код результата, к примеру 1:запись обновилась, 0:ошибка обновления.
Неактивен
mysql_affected_rows — Возвращает число затронуиых прошлой операцией рядов.
http://php.net/manual/ru/function.mysql … d-rows.php
В вашем случае при новой записи будет возвращать 1 , а при обновлённой 2.
Порядковый номер можно получить только в случае новой записи с помощью mysql_insert_id
Для обновлённой записи придётся делать дополнительный SELECT
Неактивен
Ну и касательно изначальной задачи — если Вы действительно хотите экономить
на запросах (зачем?), прийдется сначала вставить в такую же, но пустую таблицу,
а потом пройтись объединением для нахождения случаев «телефон есть, но не сов-
падает». Потому что Вы хотите id таких строк выбрать одним запросом
Неактивен