Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как узнать, добавлена ли запись ? [MySQL]


Страницы:   1 2

Parenek ©   (2007-05-18 14:25:00) 

есть таблица в которой поле Pole1 индексировано и имеет значение unique, выполняется такая вставка данных:mysql>

INSERT INTO table (Pole1,Pole2) VALUES (value1,value2)
ON DUPLICATE KEY UPDATE pole2=value3;

т.е. по этому добавлению если value1 уже содержится в таблице, то оно не будет добавлено, и pole2 будет изменено на value3 в той строке где найдено pole1 с таким же value1;

если не найдено value1 в таблице пo pole1 то оно будет добавлено.

а как узнать добавлена новая строка или изменена уже имеющаяся... ?


Val   (2007-05-18 15:38:00) [21]

>но зачем им пользоваться в данном случае
чтобы получить решение твоего вопроса.
try
вставка;
накручивание счетчика вставок;
except
 if облом с уник.ключом then
   апдейт;
 else raise;
end;


Parenek   (2007-05-18 15:35:00) [22]


> Sergey13 ©   (18.05.07 15:31) [10]


если честно или я запутался или я еще ламер (скорее второе=))

примерчик можно?


Sergey13   (2007-05-18 15:31:00) [23]

> [9] Parenek   (18.05.07 15:29)
> а чем это принципиально отличается от:

Тем, что ты получишь ответ на свой вопрос в сабже.

> а как узнать добавлена новая строка или изменена уже имеющаяся... ?

Даже будешь знать этот ответ раньше, чем произойдет само событие. 8-)


Parenek   (2007-05-18 15:29:00) [24]


> Sergey13 ©   (18.05.07 15:11) [6]
>
> Перед своим запросом запроси наличие вставляемого ключа.
>  Из ответа и так будет понятно, что произойдет.


а чем это принципиально отличается от:

> 1. ты хочешь делать сначала запрос на поиск нужного значения
> по нужному полю



> если есть обработчики исключений у этого сервера, то попытаться
> сделать вставку, обработать исключение, сделать апдейт.
> встречный вопрос - а зачем такое знание надобно, если результат
> действий один?


1.обработчик вроде есть, но зачем им пользоваться в данном случае, если сервер корректно обрабатывает поле с уникальным значением

знание чего? если результата что было сделано, то для статистики добавления. (она нужна не просто ради любопытства - она является частью контроля)


Muzhichok   (2007-05-18 15:18:00) [25]

ежели речь про стандартное добавление/обновление свойств некоей сущности, то чем плоха такая конструкция
if @id = 0
 insert into ttt(name, desc) values(@names, @desc)
else
 update ttt set name=@name, desc=@desc where id=@id
?
в роли id, я так понял, pole1 и выступает?


Val   (2007-05-18 15:16:00) [26]

если есть обработчики исключений у этого сервера, то попытаться сделать вставку, обработать исключение, сделать апдейт.
встречный вопрос - а зачем такое знание надобно, если результат действий один?


Sergey13   (2007-05-18 15:11:00) [27]

> [4] Parenek   (18.05.07 15:07)

Перед своим запросом запроси наличие вставляемого ключа. Из ответа и так будет понятно, что произойдет.


Muzhichok   (2007-05-18 15:09:00) [28]

ну да, обычно так и делал


Parenek   (2007-05-18 15:07:00) [29]

не убедил :)

1. ты хочешь делать сначала запрос на поиск нужного значения по нужному полю
2.  потом узнаешь нашел сервер или нет (кстати как ты это делаешь?)
3. потом ты делаешь update (по id найденного поля) или вставляешь если не нашел сервер.

так?


Muzhichok   (2007-05-18 14:46:00) [30]

тем, что так у тебя будет if и else
и в этих ветках ты сможешь "узнать добавлена новая строка или изменена уже имеющаяся"


Parenek   (2007-05-18 14:32:00) [31]

чем мотивируешь?
так проще узнать есть ли такая запись?
и если есть то сделать update нужного поля?

разве так проще?


Muzhichok   (2007-05-18 14:27:00) [32]

проще явно делать либо insert либо update


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо