2013-03-06 77 views
1

子查詢我嘗試更新PostgreSQL表使用子查詢更新與PostgreSQL的

 UPDATE 
      bc 
     SET 
      (r, w) = ($1, $2) 
     WHERE 
      bc.sr_id IN (
       UPDATE 
        sr 
       SET 
        (r, w) = ($1, $2) 
       WHERE 
        si = $3 AND 
        rti = $4 AND 
        fc = $5 
       RETURNING sr.id 
      ) 

爲什麼它的回報錯誤?

+1

什麼是錯誤訊息? – Taryn 2013-03-06 10:32:43

回答

2

您不能鏈接那樣的DML語句。您將不得不使用可寫的CTE。

WITH buz AS 
(UPDATE foo 
SET num=0 WHERE num>5 RETURNING num) 
UPDATE bar SET num=0 WHERE num IN 
(SELECT num FROM foo); 
SELECT * FROM foo; 
SELECT * FROM bar; 

http://sqlfiddle.com/#!1/513a2/1

+1

從版本9.1起可用,如果您使用的是舊版本,則需要升級。 – 2013-03-06 12:29:04