Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > UPDATE если запись существует, INSERT если нет


Автор: HalkaR 2.1.2004, 21:09
Можно ли сделать одним выражением? Потому что использовать два запроса и одно условие не охота. Нельзя ли сделать что-то типа UPDATE IF (запись существует) ELSE INSERT?

Автор: Vit 2.1.2004, 21:15
В SQL Server можно примерно так:

If (Select count(*) from ... Where ...)=0
Insert ...
else
Update ...

Для MySQL скорее всего тоже можно но конкретный синтаксис надо смотреть в хэлпе, в некоторых базах есть ещё оператор Exists...

Автор: Cashey 3.1.2004, 01:36
По моему проще сделать так:

IF <поиск по индексу> then
Update ...
else
Insert ...

Автор: HalkaR 3.1.2004, 02:01
Vit, Cashey, там же русским языком написано MySQL!

Автор: HalkaR 3.1.2004, 02:03
Оператор exists есть, но он кажется только проверяет наличее таблицы. Есть if но он может только возвращать значения, а мне надо, чтоб выполнялось то либо иное действие.

Автор: Secandr 3.1.2004, 09:43
HalkaR Я так думаю придётся ждать новой версии MySQL. Они всё обещают сделать вложеные запросы и прочие удобности sad.gif

Автор: Гость 5.1.2004, 22:55
http://www.mysql.com/doc/en/INSERT.html
ON DUPLICATE KEY (new in MySQL 4.1.0)
например
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
может поможет.

Автор: Dimetrius 13.1.2004, 23:04
если я правильно понял, тебе нужен REPLACE.
Синтакс как у INSERT, только, прежде чем вставить, старая запись удаляется (если такая сушествует)

Автор: GoodBoy 2.11.2004, 12:09
http://dev.mysql.com/doc/mysql/ru/REPLACE.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)