我嘗試過了幾個小時做一個簡單的MySQL命令,它會無法正常工作。 我有一個數據庫存儲App的包ID,比如'com.android.package'。 它們存儲像這樣:對重複密鑰更新將無法正常工作
| ID | PackageID | PackageDesc |
| 1 | com.android.package | This is a package |
| 2 | com.android.test2pa | This is package 2 |
And so on...
現在我要插入一個新的條目,如果「com.android.package」不存在,如果存在的話,我想什麼也不做......
我嘗試以下操作:
INSERT INTO Packages (PackageID) VALUES ('com.android.package') ON DUPLICATE KEY UPDATE PackageID=VALUES(PackageID)
但它仍然創造了新的條目,這樣的:
| ID | PackageID | PackageDesc |
| 3 | com.android.package | |
| 4 | com.android.package | |
| 5 | com.android.package | |
我不知道我的錯誤在哪裏。
對於'ON DUPLICATE KEY UPDATE'工作,'PackageID'必須是PK或唯一索引。你的桌子是這種情況嗎? –
@GiorgosBetsos'PackageID'是一個字符串(文本),'ID'是唯一標識符。 – Fusseldieb
在這種情況下'ON DUPLICATE KEY UPDATE'將不起作用,因爲就MySQL而言沒有重複。 –