1

サブクエリを使用して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
            )

なぜ返品エラーになるのですか?

4

1 に答える 1

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

于 2013-03-06T10:36:31.567 に答える