SQL插入仅限于

时间:2012-11-26 10:18:26

标签: mysql sql insert

我试图插入新数据当且仅当数据不存在于数据库中时,如果它存在,只需打破插入操作并采取下一项并尝试再次检查并插入,我想要类似的东西这样:

insert into db if field_id doesnot exist, if exist, dont touch anything, neither update nor anything

ON DUPLICATE KEY UPDATE不是我想要的,INSERT IGNORE现在对我来说似乎很神秘

这是我的尝试:

$check = "SELECT anzeige_id FROM table WHERE anzeige_id = '$whatIhaveInMyHand'";
$checked=mysql_query($check);
if(mysql_num_rows($checked)==0){
$sql = "INSERT INTO table (`firmen_id`,`anzeige_id`,`anzeige_txt`) VALUES ('$firma_id','$anzeigen_id','$anzeige_txt')";
$sql_inserted = mysql_query($sql);
if($sql_inserted){
   echo "inserted into db <br/>";
}else{
  echo "anzeige_id already exists ".$anzeigen_id."<br/>";
}

对我的计划有什么好处?

3 个答案:

答案 0 :(得分:2)

您必须首先阅读,然后插入,否则您必须信任INSERT IGNORE,这将有效地忽略任何插入会导致UNIQUE / PRIMARY键违规的行。

答案 1 :(得分:1)

如果数据集不是PRIMARY KEY并且使用INSERT IGNORE,则在您用于标识数据集的字段上设置UNIQUE约束。这将导致插入新数据集并且无法以静默方式插入旧数据集。

答案 2 :(得分:0)

设置计数器并阅读所有记录:

if(counter>0) {
   record available
}