插入忽略不会忽略
Posted
技术标签:
【中文标题】插入忽略不会忽略【英文标题】:insert ignore won't ignore 【发布时间】:2012-06-13 06:12:40 【问题描述】:此代码:将总是插入行,从不检测存在
$r = mysql_query("INSERT IGNORE INTO facebook (uid,fid) VALUES ('".$_SESSION['id']."','".$persone['id']."')") or die(mysql_error());
为什么?
编辑:请不要,输入值总是相同的
【问题讨论】:
facebook
表的主键是什么? INSERT IGNORE
仅检查主键。
我明白了.. 那么如何将 uid 设为主键? @科斯塔
【参考方案1】:
INSERT IGNORE
仅适用于主键字段。如果您的facebook
表没有设置主键,您可以这样做:
alter table facebook add primary key (uid)
此后,INSERT IGNORE
不会插入重复的行。
【讨论】:
我认为的问题是我不想防止重复键而是重复组合(或行) 然后你可以用ALTER TABLE facebook ADD PRIMARY KEY (uid, fid)
把两列都放入主键,或者在插入新行之前检查行是否存在。请注意,如果您已经定义了主键,则需要先使用 ALTER TABLE facebook DROP PRIMARY KEY
删除该键,然后添加新的主键。
报错如下:定义了多个主键
就像我说的,你需要用我写的代码删除以前的主键,然后再次添加主键。以上是关于插入忽略不会忽略的主要内容,如果未能解决你的问题,请参考以下文章