Консультация № 170072
01.07.2009, 17:35
0.00 руб.
0 4 2
Здравствуйте.
Скажите пожалуйста какой sql запрос надо составить , что бы ,когда приходят новые данные: если в таблице уже есть поля с такими данными то ничего не происходило , если нет то происходила вставка .

Таблица
------------------------------------
id | id_query | id_user
1| 5 | ivanov

-----------------------------------
если приходит id_query='5' , id_user ='ivanov' -то ничего ни делать , если id_query='5' и id_user ='petrov' или id_query='7' и d_user ='ivanov' или id_query='10' и id_user ='gena' (такое сочетание id_query и id_user которого ещё нет в таблице) то тогда надо вставить эти данные в таблицу.
Спасибо.

Обсуждение

Неизвестный
01.07.2009, 17:38
общий
база mysql , апач
Неизвестный
02.07.2009, 01:06
общий
это ответ
Здравствуйте, Dima1967.

Можно поставить ограничение unique на эти два столбца:
Код:
ALTER TABLE TableName ADD CONSTRAINT UNIQUE (id_query, id_user);


Тогда при вставке значений, которые уже присутствуют в таблице будет сгенерировано исключение, либо возвращен код ошибки (это зависит от того, какой фреймворк вы используете для работы с базой данных).
5
Я использовал это <br>и это:"<br>Набор полей id_query и id_user объявить уникальными, а чтобы при вставке не возникала ошибка, добавить еще слово IGNORE.<br>http://dev.mysql.com/doc/refman/5.0/en/insert.html "
Неизвестный
02.07.2009, 01:56
общий
это ответ
Здравствуйте, Dima1967.
Можно предварительно проверять, есть ли такое значение. И если нет - то вставить. Пример на pl/sql

Приложение:
declare
iCount integer;
begin
select count(*) into iCount from table where id_query='5' and id_user ='ivanov';
if iCount = 0 then -- нет еще такого значения
insert into table values(1,'5','ivanov');
end if;
end;
5
нормально работает
Неизвестный
02.07.2009, 12:50
общий
Dima1967:
Набор полей id_query и id_user объявить уникальными, а чтобы при вставке не возникала ошибка, добавить еще слово IGNORE.
http://dev.mysql.com/doc/refman/5.0/en/insert.html
Форма ответа