-- 创单后置步骤表:与订单同一事务写入,提交后由后台执行。 -- 可重复执行。不建唯一索引。 SET @db := DATABASE(); SET @exists := ( SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 't_order_side_effect' ); SET @sql := IF( @exists = 0, 'CREATE TABLE `t_order_side_effect` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT ''主键'', `OrderId` INT NOT NULL COMMENT ''订单 Id'', `Step` VARCHAR(64) NOT NULL COMMENT ''步骤:customs-9610/forecast-billing/track-upsert 等'', `Status` VARCHAR(32) NOT NULL DEFAULT ''pending'' COMMENT ''pending/running/done/failed'', `PayloadJson` TEXT NULL COMMENT ''步骤入参,含轨迹授权头,日志中不要打印全文'', `AttemptCount` INT NOT NULL DEFAULT 0 COMMENT ''已尝试次数'', `NextRunTime` DATETIME NULL COMMENT ''下次可执行时间'', `LastError` 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_order_side_effect_due` (`Status`, `NextRunTime`), KEY `idx_order_side_effect_order` (`OrderId`, `Step`) ) COMMENT=''创单后置步骤''', 'SELECT ''t_order_side_effect already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;