-- =========================================
-- Undo Log表 - AT模式自动补偿事务必需
-- =========================================
-- 必须在每个业务数据库中创建此表
-- Seata AT模式通过undo_log表记录数据变更前后镜像，用于回滚

-- MySQL 8.0 版本
CREATE TABLE IF NOT EXISTS `undo_log` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `branch_id` BIGINT NOT NULL,
  `xid` VARCHAR(128) NOT NULL,
  `context` VARCHAR(128) NOT NULL,
  `rollback_info` LONGBLOB NOT NULL,
  `log_status` INT NOT NULL,
  `log_created` DATETIME NOT NULL,
  `log_modified` DATETIME NOT NULL,
  `ext` VARCHAR(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`),
  KEY `ix_log_created` (`log_created`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AT模式undo_log回滚日志表';

-- MySQL 5.7 版本（如果使用）
-- CREATE TABLE IF NOT EXISTS `undo_log` (
--   `id` BIGINT NOT NULL AUTO_INCREMENT,
--   `branch_id` BIGINT NOT NULL,
--   `xid` VARCHAR(128) NOT NULL,
--   `context` VARCHAR(128) NOT NULL,
--   `rollback_info` LONGBLOB NOT NULL,
--   `log_status` INT NOT NULL,
--   `log_created` DATETIME NOT NULL,
--   `log_modified` DATETIME NOT NULL,
--   `ext` VARCHAR(100) DEFAULT NULL,
--   PRIMARY KEY (`id`),
--   UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`),
--   KEY `ix_log_created` (`log_created`)
-- ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='AT模式undo_log回滚日志表';
