這個問題有些關於「最佳實踐」,但也是一個潛在問題的搜索。我希望能夠在多個字段上運行更新並分配不同的值,而無需運行多個查詢並且不使用超級複雜查詢。所以,我所做的是創建一個主鍵和「名稱」列作爲唯一鍵的表。插入重複密鑰更新作爲替代更新
現在,當我想用不同的值更新多列,我可以運行這樣的查詢:
INSERT INTO my_table (name, description) VALUES ('name', 'mydescription'), ('name2', 'description2') ON DUPLICATE KEY UPDATE description = VALUES(description)
這是一個壞主意?有一個更好的方法嗎?標準警察是否會逮捕我?
編輯:我只是注意到一個潛在的問題,作爲一個競爭條件。如果一個用戶在另一個用戶正在編輯它時刪除了一行,並且他們保存了該信息,那麼編輯將重新創建該行。 (這可以作爲一個功能或一個錯誤。)
參見[性能問題::ON DUPLICATE密鑰更新VS UPDATE(MySQL的)] -table
UPDATE
語法與表使用從UNION
物化常數(http://stackoverflow.com/questions/5036051/performance-問題上,重複鍵更新-VS-更新MySQL的)。 – eggyal這是一個類似的問題,但我更多地詢問這是否允許。我並不擔心在這種情況下的表現(我知道,我知道),因爲該應用程序被包含並限制使用。但是有沒有簡單的選擇?用'update'做這件事的唯一方法是使用'UPDATE'來處理一個有點難看的案例。 – teynon
它的工作原理非常簡潔。看到我的答案下面的替代。 – eggyal