gpt4 book ai didi

mysql - ON DUPLICATE KEY UPDATE 不起作用

转载 作者:行者123 更新时间:2023-11-29 07:29:39 24 4
gpt4 key购买 nike

我尝试了几个小时来创建一个简单的 MySQL 命令,但它不起作用。我有一个数据库,其中存储应用程序的包 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按预期工作的Packages表架构如下:

CREATE TABLE Packages (
`ID` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`PackageID` VARCHAR(30) NOT NULL,
`PackageDesc` VARCHAR (100),
UNIQUE(`PackageID`)
);

该语句执行后:

INSERT INTO Packages (PackageID, PackageDesc) VALUES 
('com.android.package', 'This is a package')
ON DUPLICATE KEY UPDATE PackageID=VALUES(PackageID);

Packages 包含以下行:

# ID, PackageID,            PackageDesc
'1', 'com.android.package', 'This is a package'

如果您现在执行以下语句:

INSERT INTO Packages (PackageID, PackageDesc) VALUES 
('com.android.package', 'This is a package2')
ON DUPLICATE KEY UPDATE PackageID=VALUES(PackageID), PackageDesc=VALUES(PackageDesc);

包含:

# ID, PackageID,            PackageDesc
'1', 'com.android.package', 'This is a package2'

这意味着 UPDATE 是由后者的 INSERT INTO 执行的。

Demo here

关于mysql - ON DUPLICATE KEY UPDATE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33140665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com