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

データベースの移行中にテーブルがALTERされた後、関数を返すテーブルを「再コンパイル」できますか?

    あなたはこのDOを探していました ステートメント:

    CREATE TABLE p1(a INT, b TEXT);
    
    CREATE OR REPLACE FUNCTION authenticate() RETURNS SETOF p1 as '
    DECLARE
        player_row p1;
    BEGIN
    
        -- query is more complicated but always returns zero or one rows
        SELECT p.* INTO player_row
        FROM p1 p;
    
        IF FOUND THEN
            RETURN NEXT player_row;
    
            -- more code in here..
        END IF;
    
        RETURN;
    END;' LANGUAGE plpgsql ROWS 1;
    
    ALTER TABLE p1 ADD COLUMN c VARCHAR(2);
    INSERT INTO p1 VALUES(1,'a', 'c');
    
    do $$ begin execute pg_get_functiondef('authenticate'::regproc); end; $$;
    
    SELECT * FROM AUTHENTICATE();
    

    しかし、a_horse_with_no_nameが示唆するように、あなたはただ\cすることができます psqlに再接続します




    1. C#、Entity Framework Core、PostgreSql:単一の行の挿入には20秒以上かかります

    2. 最大テーブルとデザインパターン

    3. SQL:NULL値のみの列を選択します

    4. POSTMANは値が変更された日付フィールドを返します