• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PostgreSQL 10 触发器创建分区表以和索引

武飞扬头像
恩洛
帮助2

函数
date_time为分区字段

CREATE OR REPLACE FUNCTION "public"."insert_trigger_table"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
DECLARE date_timeflag TEXT;
DECLARE str_sql TEXT;
BEGIN
	date_timeflag := NEW.date_time;
	str_sql := 'INSERT INTO '||TG_RELNAME||'_'|| date_timeflag||' VALUES ($1.*)';
	EXECUTE str_sql USING NEW;
	RETURN NULL;
	EXCEPTION
	WHEN UNDEFINED_TABLE
	THEN
		EXECUTE
			'CREATE TABLE IF NOT EXISTS '||TG_RELNAME||'_'
			|| date_timeflag
			|| '(CHECK (date_time = '''
			|| date_timeflag
			|| ''')) INHERITS ('||TG_RELNAME||');'
	
	'CREATE INDEX "prplisrepairlist_city_2_' || date_timeflag ||'" ON ' || TG_RELNAME||'_'|| date_timeflag || ' USING btree (date_time);

CREATE INDEX "prplisrepairlist_county_3_' || date_timeflag ||'" ON ' || TG_RELNAME||'_' || date_timeflag || ' USING btree (date_time)';
			
		EXECUTE str_sql USING NEW;
    RETURN NULL;
END
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ALTER FUNCTION "public"."insert_trigger_table"() OWNER TO "postgres";
学新通

触发器
创建触发器

CREATE TRIGGER "insert_trigger" BEFORE INSERT ON "public"."test"
FOR EACH ROW 
EXCUTE PROCEDURE "public"."insert_trigger_table"();

删除触发器

DROP TRIGGER "insert_trigger" on "public"."test";

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibcfjb
系列文章
更多 icon
同类精品
更多 icon
继续加载