如果id不存在,MySQL UPDATE表1和表2上的INSERT

时间:2013-06-21 08:16:38

标签: mysql insert

我有一个左连接查询,显示主表(tblMarkers)中的所有字段和第二个表(tblLocations)中存在匹配记录的值。 tblLocations没有tblMarkers中每个id的记录

$query ="SELECT `tblMarkers`.*,`tblLocation`.*,`tblLocation`.`ID` AS `markerID`
FROM
   `tblMarkers`
 LEFT JOIN `tblLocation` ON `tblMarkers`.`ID` = `tblLocation`.`ID`
WHERE
`tblMarkers`.`ID` = $id";

我很乐意使用UPDATE来更新tblMarkers字段,但如果tblLocations中还没有记录,如何将记录更新或插入到tblLocations中。

另外,如何锁定我正在处理的记录以防止其他人同时进行更新?

我还可以使用UPDATE tblMarkers *还是必须列出UPDATE语句中的每个字段?

1 个答案:

答案 0 :(得分:0)

不幸的是,您可能必须在外部脚本中实现一些验证。 SQL中有一个IF语句,但我不确定你是否可以根据它的结果触发不同的命令。

<强>锁定

在锁定方面,您有2个选项。对于MyISAM表,您只能使用http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

锁定整个表
LOCK TABLE users;

对于InnoDB表,单行没有明确的“锁定”,但是您可以使用事务来获取操作期间的专有权。 http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html

<强>更新

可能有一些简写符号,但我认为您必须列出查询中的每个字段。或者,您始终可以读取整行,删除它并使用简写INSERT查询再次插入。这一切都取决于你有多少领域。