Update multiple rows in a table with different values

Поиск
Список
Период
Сортировка
От shankha
Тема Update multiple rows in a table with different values
Дата
Msg-id CAO_L6qERUvQSbD0uTY0t8ASsdAcpZrc6MB01cENnma6pfFRawQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: Update multiple rows in a table with different values  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: Update multiple rows in a table with different values  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-general
Greetings,
I have the following schema:

    CREATE TABLE "s"."t1"
    (
        "c1" BigSerial PRIMARY KEY,
        "c2" BigInt NOT NULL,
        "c3" BigInt
    )
    WITH (OIDS=FALSE);

    INSERT INTO s.t1 (c2, c3) VALUES (10, 100);
    INSERT INTO s.t1 (c2, c3) VALUES (20, 200);
    INSERT INTO s.t1 (c2, c3) VALUES (30, 300);
    INSERT INTO s.t1 (c2, c3) VALUES (40, 400);

    PREPARE updateplan (BigInt, BigInt) AS
        update s.t1
        SET c3 = $2
        WHERE c2 = $1;

    EXECUTE updateplan (20, 250);
***
    PREPARE updatearrayplan(BigInt[], BigInt[]) AS
        for i in size($1)
        DO
            update s.t1
            SET c3 = $2[$i]
            WHERE c2 = $1[$i]
        END FOR

    EXECUTE updatearrayplan({20, 30}, {275, 375})
***
    /* 20, 200 -> 20, 275 */
    /* 30, 300 -> 30, 375 */
***

After execution of updatearrayplan I am expecting the rows to have
these values  20 -> 275 , 30 -> 375

Is there a way to update multiple rows with different column values
passed in as array. Also is there a guarantee that the order of the
arrays will be maintained.

Thanks


В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: table name size
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Update multiple rows in a table with different values