sql >> Databasteknik >  >> RDS >> PostgreSQL

Ändra typen av en kolumn som används i andra vyer

Jag tror att det här gör vad du vill, även om jag flyttade visningslistan till slutet av args för att vara kompatibel med VARIADIC-semantik.

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. CONVERT_TZ() Exempel – MySQL

  2. Hur skickar man GAMLT, NYTT och identifierare för att EXEKUTERA i en triggerfunktion?

  3. TypeORM PostgreSQL välj där JSON-fältet motsvarar något värde

  4. Hur hanterar jag NULL-värden i en mysql SELECT ... OUTFILE-sats i kombination med FIELDS ESCAPED BY? NULL-värden trunkeras för närvarande