CREATE OR REPLACE FUNCTION card_timelines () RETURNS TRIGGER AS $$ DECLARE temp RECORD; srow RECORD; BEGIN IF (TG_OP = 'INSERT') THEN IF NEW.virtual_activated_at IS NOT NULL THEN RAISE NOTICE 'row % inserted', NEW.sim; SELECT virtual_order_cards.order_id virtual_order_cards.created_at, virtual_packages.service_months, virtual_packages.name AS package_name INTO srow FROM virtual_order_cards JOIN virtual_packages ON virtual_order_cards.package_id = virtual_packages.id WHERE sim = NEW.sim; IF FOUND THEN INSERT INTO timelines (sim, package_type, package_name, starttime, endtime) VALUES (NEW.sim, 0, srow.package_name, NEW.virtual_activated_at, NEW.virtual_activated_at + (srow.service_months || ' month')::interval); END IF; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF OLD.virtual_activated_at IS NOT NULL OR NEW.virtual_activated_at IS NOT NULL THEN IF NEW.virtual_activated_at IS NULL THEN RAISE NOTICE 'NEW virtual_activated_at IS NULL'; ELSE RAISE NOTICE 'NEW virtual_activated_at IS NOT NULL'; END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN END IF; RETURN NULL; END; $$ LANGUAGE plpgsql; CREATE SEQUENCE "order_cards_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; CREATE TABLE "order_cards" ( "id" int4 NOT NULL DEFAULT nextval('order_cards_id_seq'::regclass), "type" int2 NOT NULL DEFAULT 0, "sim" int8 NOT NULL DEFAULT '0'::bigint, "order_id" int4 NOT NULL DEFAULT 0, "company_id" int4 NOT NULL DEFAULT 0, "package_id" int4 NOT NULL DEFAULT 0, "counts" int4 NOT NULL DEFAULT 1, "created_at" timestamp(0), "updated_at" timestamp(0), "deleted_at" timestamp(0), "service_start_at" timestamp(0), "service_end_at" timestamp(0), CONSTRAINT "order_cards_pkey" PRIMARY KEY ("id", "type") ) PARTITION BY LIST (type); ; CREATE UNIQUE INDEX "virtual_order_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" USING btree ( "order_id" "pg_catalog"."int4_ops" ASC NULLS LAST, "sim" "pg_catalog"."int8_ops" ASC NULLS LAST, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp without time zone) "pg_catalog"."timestamp_ops" ASC NULLS LAST ); COMMENT ON COLUMN "order_cards"."id" IS '关联表ID'; COMMENT ON COLUMN "order_cards"."sim" IS 'SIM卡号'; COMMENT ON COLUMN "order_cards"."order_id" IS '订单ID'; COMMENT ON COLUMN "order_cards"."company_id" IS '企业ID'; COMMENT ON COLUMN "order_cards"."package_id" IS '套餐ID'; COMMENT ON COLUMN "order_cards"."counts" IS '数量'; COMMENT ON TABLE "order_cards" IS 'VD卡关联基础套餐订单'; CREATE TABLE virtual_order_cards PARTITION OF order_cards FOR VALUES IN (0); CREATE TABLE virtual_order_renewal_cards PARTITION OF order_cards FOR VALUES IN (1); CREATE TABLE virtual_order_renewal_package_cards PARTITION OF order_cards FOR VALUES IN (2); CREATE TABLE virtual_order_flows_package_cards PARTITION OF order_cards FOR VALUES IN (3);