Как одним запросом UPDATE, увеличить значение колонки INT на +1

nick4

Guest
Как одним запросом UPDATE, увеличить значение колонки INT на +1

собственно сабж
 

nick4

Guest
Originally posted by neko
http://dev.mysql.com/doc/mysql/en/UPDATE.html
спасибо,
еще один вопрос:

как можно одним запросом добавить значение в таблицу (например IP), если его не существует, и в случае если существует - обновить соответствующюю колонку hits=hits+1?
 

neko

tеam neko
afaik до версии 4.1.0 никак

-~{}~ 11.11.04 05:08:

а в ней insert ... on duplicate
 

nick4

Guest
Originally posted by neko
afaik до версии 4.1.0 никак
а разумно ли будет делать сначала
UPDATE table SET hits=hits+1 WHERE ip='127.0.0.1' - игнорируя ошибки.
и в случае ответа false вставлять:
INSERT INTO table (date,ip,hits) VALUES ('date', '127.0.0.1', '1');
при этом предварительно поставив index unique на две колонки date,ip?
 

neko

tеam neko
незнаю если честно

могу зато другое посоветовать -- не храни айпишники в строках
http://dev.mysql.com/doc/mysql/en/Miscellaneous_functions.html
или
[m]ip2long[/m]
 

ForJest

- свежая кровь
nick4
Зачем тебе это делать одним запросом? Делай как всегда
UPDATE, если [m]mysql_affected_rows[/m] == 0, тогда INSERT.
Если же записи чаще добавляются, чем обновляются, тогда
INSERT IGNORE, если mysql_affected_rows == 0 (запись уже есть), UPDATE.
 
Сверху