![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Добрый вечер! Как сделать такой алгоритм:
Если запись с полем = "$переменная" уже существует в БД, то редактируем его (update), иначе добавляем (insert) У меня в голове родилась только такая мысля: делаем запрос select *, сравниваем поле с переменной, если есть результат - то редактируем, если нет - то добавляем. Но мне почему-то кажется, что это не лучшее решение в плане производительности. Что посоветуете? Это сообщение отредактировал(а) Aliance - 4.6.2006, 01:17 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
Aliance, со своей колокольни вижу три варианта:
1) хранимая процедура, которая и проверит и добавит. Достоинства - она выполняется тоже на стороне сервера, но не интерпретатором PHP, а затем - интерпретатором MySQL, а только MySQL. Немного быстрее. Недостатки - количество кода столько же, а 5-ю версию MySQL поддерживают далеко не все хостинги. 2) триггер. Достоинства: в отличии от процедуры будет работать при любом добавлении - не надо из PHP вызывать процедуру и помнить об этой необходимости. Недостатки: те же, что и в п.1 - поддержка только с 5-й версии 3) Конструкция
Поле "Update" может ничего не делать. Главное, чтоб на "возможно повторяющихся" полях был определён ключ. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Есть такой запрос - REPLACE, по синтаксису схож с INSERT, думаю с реализацией разберешься
![]() |
|||
|
||||
ASteel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.5.2006 Где: Krasnodar, Russia Репутация: нет Всего: 1 |
||||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Ввиду задачи, рассматриваем момент, когда инкремента у нас нет.
В противном случае - да. Не катит. |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
У меня был инкремент, убрал его, так как без него мне даже лучше
![]() Воспользуюсь советом Mal Hack ЗЫ: PHP 4ый. Это сообщение отредактировал(а) Aliance - 4.6.2006, 19:00 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |