我正在尝试制作一个简单的MySQL命令,但它无法正常工作。 我有一个数据库,其中存储了应用程序的包ID,例如'com.android.package'。 它们的存储方式如下:
<b>
现在我想插入一个新条目,如果'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...
但它仍会创建新条目,如:
INSERT INTO Packages (PackageID) VALUES ('com.android.package') ON DUPLICATE KEY UPDATE PackageID=VALUES(PackageID)
我不知道我的错误在哪里。
答案 0 :(得分:2)
Packages
建议的ON DUPLICATE KEY UPDATE
表架构按预期工作如下:
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);
Packages
包含:
# ID, PackageID, PackageDesc
'1', 'com.android.package', 'This is a package2'
这意味着后者UPDATE
执行了INSERT INTO
。