sql >> Database >  >> RDS >> PostgreSQL

Het type kolom wijzigen dat in andere weergaven wordt gebruikt

Ik denk dat dit doet wat je wilt, hoewel ik de weergavelijst naar het einde van args heb verplaatst om compatibel te zijn met VARIADIC-semantiek.

CREATE OR REPLACE FUNCTION recreate_views(run_me text, VARIADIC views text[])
  RETURNS void
AS  $$
DECLARE
  view_defs text[];
  i integer;
  def text;
BEGIN
  for i in array_lower(views,1) .. array_upper(views,1) loop
    select definition into def from pg_views where viewname = views[i];
    view_defs[i] := def;
    EXECUTE 'DROP VIEW ' || views[i];
  end loop;

  EXECUTE run_me;

  for i in reverse array_upper(views,1) .. array_lower(views,1) loop
    def = 'CREATE OR REPLACE VIEW ' || quote_ident( views[i] ) || ' AS ' || view_defs[i];
    EXECUTE def;
  end loop;

END
$$
LANGUAGE plpgsql;


  1. Tabel is 'alleen lezen'

  2. Unieke beperking zonder index

  3. Kan op afstand verbinding worden gemaakt met SQL Server Express LocalDB?

  4. Verschil zichtbaarheid in subquery join en waar