【发布时间】:2011-05-11 07:01:58
【问题描述】:
在写我的问题时(如何:插入一个新条目,如果它已经存在,请更新它)我在Related Questions找到了一些答案:
$sql = "INSERT OR REPLACE INTO $table ( Id, Name, Rating ) VALUES( ?, ?, ? )";
$sth_rating = $dbh->prepare( $sql );
$sth_rating->execute( $id, $name, $rating );
.
$sql = "INSERT OR IGNORE INTO $table ( Id, Name, Rating ) VALUES ( ?, ?, ? )";
$sth_rating = $dbh->prepare( $sql );
$sth_rating->execute( $id, $name, $rating );
$sql = "UPDATE $table SET Rating = ? WHERE Id = ?";
$sth_rating = $dbh->prepare( $sql );
$sth_rating->execute( $rating, $id );
第二种方法比第一种更安全吗?
【问题讨论】:
-
您是要完全替换现有字段还是仅更新其评级(如果存在)? en.wikipedia.org/wiki/Upsert
-
除“Rating”之外的所有字段都来自另一个表,并且始终相同(对于该 ID)。通常会添加条目,但如果它们已经存在,则应调整可能的新“评级”值。
标签: perl sqlite dbi sql-update sql-insert