![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Необходимо вставить в таблицу запись соблюдая следующее условие :
Поле relative должно быть уникальным, а если запись с таким значением поля rating уже существует, то сравнить значения поля rating существующей записи с вставляемой записью и оставить в базе запись с меньшим значением поля rating. таблица имеет следующую структуру :
Добавлено через 1 минуту и 42 секунды Забыл написать, база : SQLite |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
мне интересно: REPLACE вызывает триггеры ON UPDATE? если да, то вместо INSERT используй REPLACE. а в триггере на UPDATE пропиши сравнение старого и нового значения нужного поля, чтоб оставалось всегда меньшее значение. правда, при таком подходе возникает проблема: как можно увеличить значение в поле rating, чтоб не сработал триггер и не вернул старое значение?
а вообще, пожалуй, было бы правильнее логику вынести за пределы запроса вставки. т.е. проверять на предмет существование, считывать значение rating существующей записи и уже на основании этого принимать решение: перезаписывать или оставлять предыдущую. |
|||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
забыл дописать ещё один исход, если записи с таким значение поля не существует то необходимо просто вставить эту запись ..., так что как мне кажется REPLACE тут не совсем логично использовать ...
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Два запроса.
Первый - безусловная вставка. Есть запись? плевать, просто проигнорим и сбросим ошибку (если она конечно duplicate primary key). Второй - безусловный апдейт (запись-то уже гарантированно есть!). Это та самая запись? наплевать, ничего же не изменится. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
||||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |