sql >> データベース >  >> RDS >> PostgreSQL

PostgresのSELECTでUPDATEを実装する

    qry_count列のデフォルト値に注意してください:

    CREATE TABLE t (
        a INTEGER PRIMARY KEY, 
        b TEXT, 
        entered_by INTEGER, 
        qry_count INTEGER default 0
    );
    
    create function select_and_update(parameter text)
    returns setof t as $$
        update t
        set qry_count = qry_count + 1
        from (
            select a
            from t
            where b = $1
            ) s
        where t.a = s.a
        ;
        select *
        from t
        where b = $1
        ;
    $$ language sql;
    

    次に、上記の関数を使用してテーブルをクエリします。

    select * from select_and_update('a');
    

    コメントに従って更新:

    あなたはそれを動的に構築することができ、関数の代わりに、それが何であれ、トランザクションでSQLコードをラップするだけです。カーソルは必要ありません。

    begin;
        update t
        set qry_count = qry_count + 1
        from (
            select a
            from t
            where b = 'a'
            ) s
        where t.a = s.a
        ;
        select *
        from t
        where b = 'a'
        ;
    commit;
    


    1. 紺碧のコンテナインスタンスにPostgresデータベースをデプロイしますか?

    2. mysqlbooleanを「yes」または「no」として返します

    3. ファイルまたはアセンブリを読み込めませんでした'Oracle.DataAccess、Version =4.112.4.0、Culture =neutral、PublicKeyToken =89b483f429c47342'

    4. MySQL列をAUTO_INCREMENTに変更します