假设我有一个表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)
什么是这两种方式之间的区别,哪一个更好?
+1 - 例外情况例外。所有这些让数据库能够做他们擅长的事情,而不是为应用程序代码添加额外的条件 – 2011-03-22 01:30:39