-- 存量库:客户出口资质备案表(含 IsDefault / Remark) -- 可重复执行。 -- 目标表:t_customer_export_qualification SET @db := DATABASE(); -- 1) 表不存在则整表创建 SET @exists := ( SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_customer_export_qualification' ); SET @sql := IF( @exists = 0, 'CREATE TABLE `t_customer_export_qualification` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT ''主键'', `CustomerId` INT NOT NULL COMMENT ''归属客户 t_customer.Id'', `CompanyName` VARCHAR(200) NOT NULL COMMENT ''企业名称'', `SocialCreditCode` VARCHAR(64) NOT NULL COMMENT ''企业社会信用代码'', `DomesticConsignor` VARCHAR(200) NOT NULL COMMENT ''境内发货人'', `DomesticConsignorCustomsCode` VARCHAR(64) NULL COMMENT ''境内发货人海关代码'', `ProducerName` VARCHAR(200) NOT NULL COMMENT ''生产销售单位'', `ProducerCustomsCode` VARCHAR(64) NULL COMMENT ''生产销售单位海关代码'', `CustomsPort` VARCHAR(100) NULL COMMENT ''备案海关港口地'', `IsDefault` TINYINT NOT NULL DEFAULT 0 COMMENT ''是否默认:0-否,1-是(同客户仅一条)'', `Remark` VARCHAR(512) NULL COMMENT ''备注'', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT ''软删除:0-否,1-是'', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT ''并发戳'', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT ''创建人'', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ''创建时间'', `UpdateUserId` INT NULL COMMENT ''更新人'', `UpdateTime` DATETIME NULL COMMENT ''更新时间'', PRIMARY KEY (`Id`), KEY `idx_ceq_customer` (`CustomerId`, `IsDeleted`, `Id`), KEY `idx_ceq_credit` (`SocialCreditCode`, `IsDeleted`), KEY `idx_ceq_customer_default` (`CustomerId`, `IsDefault`) ) COMMENT=''客户出口资质备案''', 'SELECT ''t_customer_export_qualification already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 2) 已建表但缺 IsDefault 时补列 SET @col := ( SELECT COUNT(1) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_customer_export_qualification' AND COLUMN_NAME = 'IsDefault' ); SET @sql := IF( @col = 0, 'ALTER TABLE `t_customer_export_qualification` ADD COLUMN `IsDefault` TINYINT NOT NULL DEFAULT 0 COMMENT ''是否默认:0-否,1-是(同客户仅一条)'' AFTER `CustomsPort`', 'SELECT ''IsDefault already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 3) 已建表但缺 Remark 时补列 SET @col := ( SELECT COUNT(1) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_customer_export_qualification' AND COLUMN_NAME = 'Remark' ); SET @sql := IF( @col = 0, 'ALTER TABLE `t_customer_export_qualification` ADD COLUMN `Remark` VARCHAR(512) NULL COMMENT ''备注'' AFTER `IsDefault`', 'SELECT ''Remark already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 4) 默认索引 SET @idx := ( SELECT COUNT(1) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_customer_export_qualification' AND INDEX_NAME = 'idx_ceq_customer_default' ); SET @sql := IF( @idx = 0, 'ALTER TABLE `t_customer_export_qualification` ADD KEY `idx_ceq_customer_default` (`CustomerId`, `IsDefault`)', 'SELECT ''idx_ceq_customer_default already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;