我的問題是。我在MySQL中使用了'流行'字段'id','title','popular'。如果信息不存在或者增加'受歡迎度'的值,如果信息存在,我需要在字段「標題」中插入信息。最好的做法是什麼?如果不存在或者增量,如果存在,則插入INSERT
0
A
回答
0
0
INSERT INTO popular (title, popularity) VALUES (:the_title, 1)
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), popularity = popularity + 1
確保您有title
id = LAST_INSERT_ID(id)
的唯一約束,可以讓你得到更新使用LAST_INSERT_ID
插入的記錄/的id
(或你的MySQL API的等效功能)。如果您不需要id
,則可以將其從UPDATE列表中刪除。
0
示例代碼:
if exists (select * from contact where name = @name) then
select -1;
else
insert into contact(name) values(@name);
select last_insert_id();
end if;
參考:
http://bugs.mysql.com/bug.php?id=19243
http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/
相關問題
- 1. 如何插入如果不存在,或增加,如果存在SQLite?
- 2. 如果不存在或者不存在
- 3. 從SELECT處插入INSERT - 如果存在?
- 4. 如果不存在則插入
- 5. ,如果不存在則插入(MySQL)
- 6. 如果值不存在,則插入cookie
- 7. 如果該值不存在,則插入
- 8. 如果VALUES不存在,則插入
- 9. 如果存在行,則不插入
- 10. 如果不存在數字,則插入
- 11. 如果不存在,則追加。如果存在,增加計數
- 12. 如果不存在或者如果不存在 - 如何批量處理
- 13. INSERT行如果不存在
- 14. 如果存在行,則更新列,如果不存在則插入行
- 15. 插入 - 如果不存在
- 16. 如果不存在,插入?
- 17. 插入id是否存在,或者如果id存在查詢則更新表?
- 18. JPA批量插入如果不存在
- 19. MySQL:如果存在增量值,則創建如果不存在(多個條件)
- 20. PYTHON/MySQL:檢查是否存在記錄。如果存在不要插入,如果不存在,則插入
- 21. MySQL - 增加列值或插入數據(如果不存在)
- 22. 插入如果不存在UPDATE如果存在不起作用
- 23. PHP MYSQL INSERT行,如果不存在,或者從DB
- 24. MySQL INSERT否則如果存在UPDATE
- 25. MySQL:如果外鍵存在,則插入
- 26. 更新(如果存在),否則插入
- 27. 如果行存在,行更新。如果行不存在,則插入它
- 28. 數據庫:如果存在「更新」如果不存在插入
- 29. 插入,如果不存在,但刪除,如果它存在
- 30. SQL:插入如果不存在和更新,如果存在
這如果兩個線程調用它同時具有相同名稱將拋出一個重複鍵錯誤。您需要鎖定select中的行並確保整個事件在單個事務中運行。 – Vatev