假设我有一个表 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)
这两种方式有什么区别,哪一种更好?
最佳答案
第二个是单个 SQL 命令,它利用数据库提供的功能来准确解决您在这里遇到的问题。
它会使用它,因为它应该更快、更可靠。
如果该功能不可用(较旧的数据库版本?),第一个是后备。
关于python - 这两种实现 `on duplication increment` 的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385718/