2010-11-11 2 views
6

Я сделал это успешно с инструкцией UPDATE до, но не REPLACE.Приращение значения поля на REPLACE

Я сохраняю любимые предметы в таблице mysql, когда пользователь проверил.

Таблица Favs является:

USER (int) 
ITEM (int) 
COUNT (int default 0) 

SQL, я пытаюсь это:

REPLACE INTO favs (user,item,count) VALUES ('1','3', count + 1) 

хотя и не бросайте никаких ошибок не кажется, для увеличения значения либо.

Возможно ли это? Спасибо.

ответ

15

Похоже, что это не работает на замену. Из manual:

Вы не можете ссылаться на значения из текущей строки и использовать их в новом ряда. Если используется назначение таких как SET имя_столбец = имя_столбец + 1, то ссылка на имя столбца на стороне правой руки обрабатывается как по умолчанию (col_name), так что назначение эквивалентно SET имя_столбца = по умолчанию (col_name) + 1.

Edit:

Однако INSERT ... ON DUPLICATE UPDATE может делать то, что вы пытаетесь достичь:

INSERT INTO favs (user, item) VALUES (2, 3) 
    ON DUPLICATE KEY UPDATE count = count + 1; 
+0

OK нет ж orries Я буду делать отдельное заявление UPDATE сразу после. Спасибо. – Titan

+0

См. Мое редактирование - это то, что вы пытаетесь сделать? Если это так, это будет безопаснее и эффективнее, чем отдельные заявления о замене и обновлении. – Thilo

+1

yer, который отлично работает, за исключением того, что вам нужно удалить «SET» из инструкции для его работы. – Titan

Смежные вопросы