PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Промяна на типа на колона, използвана в други изгледи

Мисля, че това прави това, което искате, въпреки че преместих списъка с изгледи в края на аргументите, за да бъде съвместим със семантиката VARIADIC.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Уникално ограничение за комбинация от две колони?

  2. pg client.query() не чака при изчакване

  3. Прехвърляне или извличане на клеймо за време от v1 UUID в PostgreSQL

  4. PG gem няма да се инсталира в приложението Rails:Gem::Ext::BuildError:ГРЕШКА:Неуспешно изграждане на естествено разширение за gem

  5. Промяна на всички нули (ако има такива) във всички колони (в таблица) на... да речем 1