mysql無法在同一資料表上同時進行查詢與更新

日前朋友傳訊問了一個資料庫錯誤的問題:#1093 – You can’t specify target table ‘xxx’ for update in FROM clause,碰巧是我以前遇過,所以很快的就回答他…
mysql無法在同一資料表上同時進行查詢與更新

mysql無法在同一資料表上同時進行查詢與更新,以下列語法來說,就會產生上述1093的錯誤:

DELETE FROM story_category WHERE category_id NOT IN (
SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id);

它打算刪除story_category的資料,但卻用到story_category做子查詢

其實這是個邏輯上可行,但實際上卻不行的語法;詳細情況沒去研究,不過可能是因為mysql在做子查詢時會把table給lock鎖起來,所以無法在該table進行新增修改刪除的動作

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *