| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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. Они всё обещают сделать вложеные запросы и прочие удобности |
| Автор: Гость 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 |