-- 商户结账关系:在钱包业务库执行;微服务通常为 pjcloudx_wallet,单体以实际业务库为准。 -- 仅新增两表,不改写商户和历史结账数据。MySQL 8;重复执行不会重复建表。 -- 主表逻辑删除,绑定表仅保存当前有效占用;历史财务依据应另存账单快照。 CREATE TABLE IF NOT EXISTS `mch_checkout_relation` ( `id` BIGINT NOT NULL COMMENT '关系主键,应用分配雪花ID', `intermediary_name` VARCHAR(100) NOT NULL COMMENT '中间方名称,保存前去除首尾空格', `remark` VARCHAR(500) DEFAULT NULL COMMENT '关系备注', `version` INT NOT NULL DEFAULT 0 COMMENT '并发版本,每次修改递增', `tenant_id` BIGINT NOT NULL COMMENT '所属租户,服务端确定', `del_flag` CHAR(1) NOT NULL DEFAULT '0' COMMENT '0有效,1已删除', `active_name` VARCHAR(100) GENERATED ALWAYS AS (CASE WHEN `del_flag` = '0' THEN `intermediary_name` ELSE NULL END) STORED COMMENT '有效名称唯一键,删除后释放', `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人账号', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,服务端时区', `update_by` VARCHAR(64) DEFAULT NULL COMMENT '最后修改人账号', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间,服务端时区', PRIMARY KEY (`id`), UNIQUE KEY `uk_mch_checkout_relation_name` (`tenant_id`, `active_name`), KEY `idx_mch_checkout_relation_page` (`tenant_id`, `del_flag`, `create_time`, `id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商户结账关系主体'; CREATE TABLE IF NOT EXISTS `mch_checkout_relation_merchant` ( `id` BIGINT NOT NULL COMMENT '绑定主键,应用分配雪花ID', `relation_id` BIGINT NOT NULL COMMENT '当前结账关系ID,同租户主表主键', `merchant_id` BIGINT NOT NULL COMMENT '商户ID,引用同租户mch_manage.id', `tenant_id` BIGINT NOT NULL COMMENT '所属租户,服务端确定', `create_by` VARCHAR(64) DEFAULT NULL COMMENT '本次绑定操作人账号', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '本次绑定时间,服务端时区', PRIMARY KEY (`id`), UNIQUE KEY `uk_mch_checkout_relation_merchant` (`tenant_id`, `merchant_id`), KEY `idx_mch_checkout_relation_members` (`tenant_id`, `relation_id`, `merchant_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商户结账当前有效绑定';