Предположим, у меня есть таблица user_count
, определенная следующим образом:
id primary key, auto increment
user_id unique
count default 0
Я хочу увеличить count
на единицу, если существует существующая запись пользователя, или вставить новую запись.
В настоящее время я делаю это так (в Python):
try:
cursor.execute("INSERT INTO user_count (user_id) VALUES (%s)", user.id)
except IntegrityError:
cursor.execute("UPDATE user_count SET count = count+1 WHERE user_id = %s", user.id)
И это также может быть реализовано следующим образом:
cursor.execute("INSERT INTO user_count (user_id) VALUES (user_id) ON DUPLICATE KEY UPDATE count = count + 1", user.id)
В чем разница между этими двумя способами, и какой из них лучше?