簡體   English   中英

如果ID不存在,則在表2上執行MySQL UPDATE表1和INSERT

[英]MySQL UPDATE table 1 and INSERT on table2 if id doesnt exist

我有一個左聯接查詢,顯示來自主表(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語句中的每個字段?

不幸的是,您可能必須在外部腳本中實施一些驗證。 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查詢再次插入。 這完全取決於您擁有多少個字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM