--创建虚拟列
ALTER TABLE mch_channel ADD COLUMN merchant_unique_key VARCHAR ( 250 ) GENERATED ALWAYS AS (
CASE
WHEN third_merchant_code IS NOT NULL
AND TRIM( third_merchant_code ) != '' THEN
CONCAT( channel_code, '|||', -- 使用不易冲突的分隔符
UPPER( TRIM( third_merchant_code )) -- 统一大小写和去除空格
) ELSE NULL
END
) VIRTUAL COMMENT '非空商户号唯一键';
-- 创建唯一索引
CREATE UNIQUE INDEX uk_channel_merchant_nonnull
ON mch_channel(merchant_unique_key);