|
|
|
|
|
для: Loki
(10.03.2009 в 10:31)
| | Тогда встречный вопрос - если с момента соединения до вставки новой записи производятся соединения и обмен информацией с другими хостами, что занимает некоторое время, то ведь можно столкнуться с проблемой, что соединение будет потеряно (ну, например, память кончилась на сервере из-за перегрузки и sql сервер остановился). Иными словами, есть ли еще альтернативные решение? | |
|
|
|
|
|
|
|
для: DJ Paltus
(10.03.2009 в 13:34)
| | В пятой версии и для UPDATE аналог есть, так что век еще только начинается:) | |
|
|
|
|
|
|
|
для: Loki
(10.03.2009 в 13:24)
| | Век живи, век — учись.
Спасибо ) | |
|
|
|
|
|
|
|
для: DJ Paltus
(10.03.2009 в 12:29)
| | IGNORE не вставляет запись, если такая уже существует (для полей с уникальными индексами). Ну и собственно все: если запись вставилась - у нас есть первичный ключ, если нет - false. На основании этих данных уже можно отчитываться перед клиентом. | |
|
|
|
|
|
|
|
для: Loki
(10.03.2009 в 10:31)
| | А можно поподробнее?
Как нарочно, сегодня сделал то же самое с помощью count() и последующего history.back().
А как этот IGNORE работает? Что можно вернуть юзеру, если записи дублируются? | |
|
|
|
|
|
|
|
для: alexxspb
(08.03.2009 в 18:31)
| | Сократить до одного запроса:
INSERT IGNORE INTO table ...
|
Естественно, нужен будет уникальный индекс. | |
|
|
|
|
|
|
|
для: alexxspb
(08.03.2009 в 18:31)
| | - | |
|
|
|
|
|
|
|
для: RomanAf
(08.03.2009 в 23:22)
| | Спасибо, так и сделаю. | |
|
|
|
|
|
|
|
для: alexxspb
(08.03.2009 в 18:31)
| | оставить все как есть | |
|
|
|
|
|
|
| При добавлении записи нужно следить за тем, существует ли такая же запись в БД, и если да - отказывать в добавлении. Сейчас реализовано с помощью двух запросов - первый "SELECT COUNT(*) AS `numrows ..." проверяет кол-во результирующих рядов, и если такая проверка вернула результат 0 (записи не существует), выполняется второй запрос - INSERT.
Все работает корректно, но при двух вставках в разные таблицы получается уже 4 запроса, что, мне кажется, уже не мало. Подскажите, пожалуйста, как поступить - оставить все как есть, или сократить до одного запроса (если он вернет sql ошибку - запись существует)? | |
|
|
|
|