假設我有一個表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