Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Update и Insert с учётом времени


Автор: Klio 21.10.2009, 20:03
Здравствуйте.
такой вопрос - 
мне нужно сделать одну операцию из двух: добавить или обновить -- за один запрос
но проблема в том что в игру вступает время и некоторые другие параметры.
база: base --> поля: type (varchar), who (varchar), DT (DATETIME), number(int);
- нужно обновить запись [number=number+1 и DT=Now()  ] 
        если за 10 минут были записи где who='xxx' и type='in',
- или добавить новую запись;

если отдельно то 
Код

update base number=number+1, DT=Now() where typr='in' and who='xxx' and 600>Now()-DT;   ]
insert into base value('in','xxx',now(),1);

[Primary Key - type] [поля type и who могут быть различными]

вытался сделать так но невышло (что не так)?
Код

INSERT INTO error 
    VALUE ('enter', '', 'Add', NOW(), '', 1)
ON who='Add',600>NOW()-DT 
UPDATE
    DT = NOW(), number = number + 1;

Заранее спасибо

Автор: Akina 21.10.2009, 21:18
не... это работа для триггера, а не для запроса. Или для пользовательской функции, или для хранимой процедуры...
Я бы делал триггер BEFORE INSERT и просто вставлял запись.

Автор: Klio 21.10.2009, 21:21
с триггерами и процедурами пока не работал, так что не знаю как такое сделать.

Автор: Akina 21.10.2009, 22:43
Идёте на оф. сайт MySQL, скачиваете мануал и читаете. Ничего там сложного нет.
Ну и поиск по форуму по словам "Create Trigger".

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