0
    UPDATE member_copy
SET locked_date = CURRENT_DATE,
 notes = (
    SELECT
        notes
    FROM
        member_copy
    WHERE
        ID = 17579
) || ' CLOSED'
WHERE
    ID = 17579

PostgreSQL 8.1.23 でこのようにデータベースの更新を実行しようとしています。同時に約 800 の ID でこの更新を行う必要があります。どんな助けでも大歓迎です。

4

1 に答える 1

2

次のように大幅に簡素化できます。

UPDATE member_copy
SET locked_date = CURRENT_DATE
   ,notes = COALESCE(notes || ' ', '') || 'CLOSED'
WHERE id IN (17579, 12345, ...); --- 800 IDs

COALESCEの場合をキャッチするためのものnotes IS NULLです。古いPostgres 8.1でも動作するはずです。ただし、実際には最新バージョンにアップグレードする必要があります。

現代の Postgres では、ID の一時テーブル (またはサブセレクト) を使用し、UPDATE.

于 2013-12-10T16:24:52.333 に答える