PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bisakah saya 'mengkompilasi ulang' tabel yang mengembalikan fungsi setelah tabel itu DIUBAH selama migrasi basis data?

Anda mencari DO . ini pernyataan:

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();

tetapi seperti yang disarankan a_horse_with_no_name, Anda cukup \c untuk terhubung kembali dengan psql




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Praktik terbaik untuk mengidentifikasi jsonb null di plpgsql

  2. Langkah demi Langkah postgres_fdw

  3. Gunakan beberapa konflik_target dalam klausa ON CONFLICT

  4. Pelatihan PostgreSQL untuk MySQLer

  5. Array awal berfungsi untuk menggabungkan array multi-dimensi