33 lines
1.4 KiB
PL/PgSQL
33 lines
1.4 KiB
PL/PgSQL
-- 服务周期索引
|
|
CREATE INDEX "virtual_order_cards_timelines_index" ON "virtual_order_cards" USING GIN (TIMELINES_INDEX(id, sim));
|
|
CREATE INDEX "virtual_order_renewal_cards_timelines_index" ON "virtual_order_renewal_cards" USING GIN (TIMELINES_INDEX(id, sim));
|
|
CREATE INDEX "virtual_order_renewal_package_cards_timelines_index" ON "virtual_order_renewal_package_cards" USING GIN (TIMELINES_INDEX(id, sim));
|
|
CREATE INDEX "virtual_order_flows_package_cards_index" ON "virtual_order_flows_package_cards" USING GIN (TIMELINES_INDEX(id, sim));
|
|
|
|
-- 增删改卡表时更新索引
|
|
CREATE OR REPLACE FUNCTION REINDEX_TIMELINES ()
|
|
RETURNS TRIGGER
|
|
AS $$
|
|
BEGIN
|
|
IF (TG_OP = 'INSERT') THEN
|
|
UPDATE vd.virtual_order_cards_partition SET updated_at = CURRENT_TIMESTAMP WHERE virtual_order_cards_partition.sim = NEW.sim;
|
|
ELSIF (TG_OP = 'UPDATE') THEN
|
|
UPDATE vd.virtual_order_cards_partition SET updated_at = CURRENT_TIMESTAMP WHERE virtual_order_cards_partition.sim = NEW.sim;
|
|
ELSIF (TG_OP = 'DELETE') THEN
|
|
UPDATE vd.virtual_order_cards_partition SET updated_at = CURRENT_TIMESTAMP WHERE virtual_order_cards_partition.sim = OLD.sim;
|
|
END IF;
|
|
|
|
RETURN NULL;
|
|
END;
|
|
$$
|
|
LANGUAGE plpgsql;
|
|
|
|
DROP TRIGGER IF EXISTS REINDEX_TIMELINES ON cards;
|
|
|
|
CREATE TRIGGER "reindex_timelines" AFTER INSERT
|
|
OR UPDATE OF "virtual_activated_at"
|
|
OR DELETE
|
|
ON cards
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE REINDEX_TIMELINES ();
|