【发布时间】:2014-07-21 08:42:55
【问题描述】:
我知道错误的含义以及它发生的原因,这意味着这不是涵盖状态 23000 的许多主题的重复。我正在使用 PDO 将重复记录插入到具有复合 PK 的表中。我是故意这样做的,以便自动取消将任何重复记录插入到此特定表中。
错误SQLSTATE[23000]: Integrity constraint violation 正在杀死脚本。有没有办法为这个特定错误设置警告级别,告诉它闭嘴并继续?
如果我们不能让复合 PK 为我们工作,我就不明白它们的目的是什么?
我对数据库管理不是很有经验,所以如果我遇到“如果我用锤子敲它应该可以工作”的话,你必须原谅我。
表结构:
CREATE TABLE `cart` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(10) NOT NULL,
`itemid` int(10) NOT NULL,
UNIQUE KEY `id` (`id`),
UNIQUE KEY `unique_records` (`userid`,`itemid`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
注意称为“唯一记录”的复合 PK。
所以我有这张桌子:
| id | userid | itemid |
| 1 | 175 | 12 |
然后我执行这个查询:
$insertItem = $db->query("
INSERT INTO cart (userid, itemid)
VALUES (:userid, :itemid),
array("userid"=>"175", "itemid"=>"12")
");
执行此查询提示此错误:SQLSTATE[23000]: Integrity constraint violation。
我完全理解为什么会收到此错误 - 我只是不明白为什么它会杀死我的提交?我认为它应该继续工作,忽略一些记录因为重复而没有插入的事实?
建议!
【问题讨论】:
标签: mysql sql pdo duplicates