当前位置: 首页 > news >正文

单仁咨询建设网站网站主域名是什么

单仁咨询建设网站,网站主域名是什么,wordpress静态化首页,河北建设工程信息网查其实视图的存在与否在数据库界一直是一个话题。用好视图可以简化程序的很多代码#xff0c;用不好视图不仅会给维护带来很多的不便#xff0c;也会造成很大的性能问题。下面我从维护方面给出案例#xff0c;以及当存在这种问题的时候#xff0c;如何去解决这个问题。 假设…其实视图的存在与否在数据库界一直是一个话题。用好视图可以简化程序的很多代码用不好视图不仅会给维护带来很多的不便也会造成很大的性能问题。下面我从维护方面给出案例以及当存在这种问题的时候如何去解决这个问题。 假设有如下的表和视图 CREATE TABLE view_test (id int,cname varchar(10),des text); CREATE VIEW vw_view_testa AS SELECT * FROM view_test WHERE id 2; CREATE VIEW vw_view_testb AS SELECT * FROM view_test WHERE id 3; INSERT INTO view_test(id,cname,des) VALUES (1,a,value a),(2,b,value b),(3,c,value c),(4,d,value d),(5,e,value e); 现在我想修改表的字段 cname 从 varchar(10) 到 varchar(50) ALTER TABLE view_test ALTER COLUMN cname TYPE VARCHAR(50); ERROR:  cannot alter type of a column used by a view or rule DETAIL:  rule _RETURN on view vw_view_testa depends on column cname 说明这个时候会提示存在视图依赖无法修改字段的长度。当视图依赖成为一种嵌套的时候这种问题在系统升级的时候会严重的影响升级的速度。那么有没有更好的办法去兼容呢。好的架构师需要从根本上解决一般的业务公司只能是考虑做兼容。 下面是解决视图依赖的解决方案和步骤以及操作案例 CREATE TABLE public.deps_saved_ddl (   deps_id serial,   deps_view_schema name,   deps_view_name name,   deps_ddl_to_run text,   PRIMARY KEY (deps_id)); ALTER TABLE public.deps_saved_ddl OWNER TO postgres; -- 将所有与表依赖的视图进行转储 CREATE OR REPLACE FUNCTION public.deps_save_and_drop_dependencies(p_view_schema name, p_view_name name)   RETURNS pg_catalog.void AS $BODY$   DECLARE v_curr record;   BEGIN FOR v_curr IN (             SELECT obj_schema,obj_name,obj_type             FROM ( WITH recursive recursive_deps(obj_schema, obj_name, obj_type, depth) AS                 ( SELECT p_view_schema, p_view_name, null::char,0                   UNION                   SELECT dep_schema::name, dep_name::name, dep_type::char, recursive_deps.depth 1                   FROM ( SELECT ref_nsp.nspname ref_schema, ref_cl.relname ref_name, rwr_cl.relkind dep_type, rwr_nsp.nspname dep_schema, rwr_cl.relname dep_name                  FROM pg_depend dep                  INNER JOIN pg_class ref_cl ON dep.refobjid ref_cl.oid                  INNER JOIN pg_namespace ref_nsp ON ref_cl.relnamespace ref_nsp.oid                  INNER JOIN pg_rewrite rwr ON dep.objid rwr.oid                  INNER JOIN pg_class rwr_cl ON rwr.ev_class rwr_cl.oid                  INNER JOIN pg_namespace rwr_nsp ON rwr_cl.relnamespace rwr_nsp.oid                  WHERE dep.deptype n AND dep.classid pg_rewrite::regclass ) deps           INNER JOIN recursive_deps ON deps.ref_schema recursive_deps.obj_schema AND deps.ref_name recursive_deps.obj_name     WHERE (deps.ref_schema ! deps.dep_schema or deps.ref_name ! deps.dep_name) )       SELECT obj_schema, obj_name, obj_type, depth         FROM recursive_deps         WHERE depth 0 ) t     GROUP BY obj_schema, obj_name, obj_type     ORDER BY max(depth) DESC ) LOOP               INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)     SELECT DISTINCT p_view_schema, p_view_name, indexdef     FROM pg_indexes     WHERE schemaname v_curr.obj_schema AND tablename v_curr.obj_name; INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)     SELECT DISTINCT tablename, rulename, definition     FROM pg_rules     WHERE schemaname v_curr.obj_schema AND tablename v_curr.obj_name; INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)     SELECT p_view_schema,                p_view_name,                      COMMENT ON || CASE WHEN c.relkind v THEN VIEW WHEN c.relkind m THEN MATERIALIZED VIEW ELSE END || || n.nspname || . || c.relname || IS || replace(d.description, , ) || ;     FROM pg_class c     INNER JOIN pg_namespace n ON n.oid c.relnamespace     INNER JOIN pg_description d ON d.objoid c.oid AND d.objsubid 0     WHERE n.nspname v_curr.obj_schema AND c.relname v_curr.obj_name AND d.description is not null; INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)   SELECT p_view_schema,            p_view_name,                  COMMENT ON COLUMN || n.nspname || . || c.relname || . || a.attname || IS || replace(d.description, , ) || ;   FROM pg_class c   INNER JOIN pg_attribute a ON c.oid a.attrelid   INNER JOIN pg_namespace n ON n.oid c.relnamespace   INNER JOIN pg_description d ON d.objoid c.oid AND d.objsubid a.attnum   WHERE n.nspname v_curr.obj_schema AND c.relname v_curr.obj_name AND d.description is not null;     INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)   SELECT p_view_schema,            p_view_name,                  GRANT || privilege_type || ON || table_schema || . || quote_ident(table_name) || TO || grantee   FROM information_schema.role_table_grants   WHERE table_schema v_curr.obj_schema AND table_name v_curr.obj_name;     IF v_curr.obj_type v THEN     INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)     SELECT p_view_schema,                p_view_name,                      CREATE VIEW || v_curr.obj_schema || . || quote_ident(v_curr.obj_name) || AS || view_definition     FROM information_schema.views     WHERE table_schema v_curr.obj_schema AND table_name v_curr.obj_name;   elsif v_curr.obj_type m THEN     INSERT INTO deps_saved_ddl(deps_view_schema, deps_view_name, deps_ddl_to_run)     SELECT p_view_schema,                p_view_name,                      CREATE MATERIALIZED VIEW || v_curr.obj_schema || . || quote_ident(v_curr.obj_name) || AS || definition     FROM pg_matviews     WHERE schemaname v_curr.obj_schema AND matviewname v_curr.obj_name;   END IF;     EXECUTE DROP || CASE WHEN v_curr.obj_type v THEN VIEW WHEN v_curr.obj_type m THEN MATERIALIZED VIEW END || || v_curr.obj_schema || . || quote_ident(v_curr.obj_name);   END loop; END; $BODY$   LANGUAGE plpgsql VOLATILE   COST 100; ALTER FUNCTION public.deps_save_and_drop_dependencies(p_view_schema name, p_view_name name) OWNER TO postgres; -- 对所有之前创建的视图进行重建 CREATE OR REPLACE FUNCTION public.deps_restore_dependencies(p_view_schema name, p_view_name name)   RETURNS pg_catalog.void AS $BODY$   DECLARE   v_curr record;   BEGIN   FOR v_curr IN ( SELECT deps_ddl_to_run                         FROM deps_saved_ddl                         WHERE deps_view_schema p_view_schema AND deps_view_name p_view_name ORDER BY deps_id DESC )         loop         EXECUTE v_curr.deps_ddl_to_run;       END loop;         DELETE FROM deps_saved_ddl WHERE deps_view_schema p_view_schema AND deps_view_name p_view_name;   END; $BODY$   LANGUAGE plpgsql VOLATILE   COST 100;   ALTER FUNCTION public.deps_restore_dependencies(p_view_schema name, p_view_name name) OWNER TO postgres; 操作案例 BEGIN; SELECT deps_save_and_drop_dependencies(public, view_test); ALTER TABLE view_test ALTER COLUMN cname TYPE VARCHAR(50); SELECT deps_restore_dependencies(public, view_test); COMMIT; 查看表的结构字段 cname 的长度是否是 50 [postgreslocalhost data]$ psql psql (12.8) Type help for help. postgres# \c cloud_test You are now connected to database cloud_test as user postgres. cloud_test# \d view_test                     Table public.view_test  Column |         Type          | Collation | Nullable | Default -------------------------------------------------------------  id     | integer               |           |          |  cname  | character varying(50) |           |          |  des    | text                  |           |          | cloud_test#
http://www.hkea.cn/news/14399707/

相关文章:

  • 刷赞网站建设玉雕网站建设
  • 衡阳市建设学校官方网站帝国cms网站地图生成器
  • 泰安市住房和城乡建设厅网站wordpress um插件
  • 做a图片视频在线观看网站wordpress htaccess 文件位置
  • react 网站开发福田祥菱箱货
  • 网站建设对接流程景泰县做网站
  • 四川省建设资格注册中心网站中企动力技术支持网站
  • 建一个网站怎么赚钱吗做网站除了广告还有什么收入的
  • 石岩网站建设公司微信网站开发
  • 黄石网站推广排名服务音乐网站建设策划书
  • 排版设计专业贵阳seo公司
  • 宜宾团购网站建设网站怎么进行网络推广
  • 商丘做网站的公司有哪些wordpress支持响应式吗
  • 潍坊网站优化电话做网站的推广
  • 赣州稳稳科技有限公司seo关键词排名优化如何
  • 孕妇做兼职上哪家网站app开发分为哪几种
  • 建设职业注册中心网站东营垦利
  • 做百度网站费用多少合适做美食软件视频网站
  • 个人作品集网站模板最近下载的网站怎么找
  • 重庆门户网站学广告设计学费是多少
  • 摄影网站的规划与设计wordpress 页面模版
  • 广州建网站有哪些网络营销内容有哪些方面
  • 乐山网站开发网页设计思想论文
  • 昆明企业网站开发视频直播网站建设方案
  • 不用服务器做网站林河西网站建设
  • 杭州哪些做网站公司好html5网页设计作业免费
  • 网站服务器租赁费用表格wordpress 自定义文章列表
  • 软件开发费和网站建设网站开发制作公司名称
  • wordpress 全局js北京网站搜索引擎优化
  • 青岛找网站建设公司好仿网站上的焦点图