20260202_add_history_tables.sql 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. -- Migration: 添加客户端历史记录表
  2. -- Date: 2026-02-02
  3. -- Description: 添加缺失的历史记录表:sessions_his, system_config_his, api_nonces_his
  4. -- 这些表用于记录主表操作的历史记录,支持审计和回溯
  5. SET NAMES utf8mb4;
  6. SET FOREIGN_KEY_CHECKS = 0;
  7. -- ==================== 会话历史记录表 ====================
  8. -- ----------------------------
  9. -- Table structure for sessions_his (会话表历史记录)
  10. -- ----------------------------
  11. DROP TABLE IF EXISTS `sessions_his`;
  12. CREATE TABLE `sessions_his` (
  13. `id` int(11) NOT NULL COMMENT '原表主键ID',
  14. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID',
  15. `user_id` int(11) NOT NULL COMMENT '用户ID',
  16. `machine_code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器码',
  17. `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
  18. `expires_at` datetime NOT NULL COMMENT '过期时间',
  19. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  20. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  21. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  22. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE/RENEW',
  23. PRIMARY KEY (`id`, `his_created_at`),
  24. KEY `idx_his_created_at` (`his_created_at`),
  25. KEY `idx_user_id` (`user_id`),
  26. KEY `idx_session_id` (`session_id`)
  27. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会话表历史记录';
  28. -- ==================== 系统配置历史记录表 ====================
  29. -- ----------------------------
  30. -- Table structure for system_config_his (系统配置表历史记录)
  31. -- ----------------------------
  32. DROP TABLE IF EXISTS `system_config_his`;
  33. CREATE TABLE `system_config_his` (
  34. `id` int(11) NOT NULL COMMENT '原表主键ID',
  35. `config_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置键名',
  36. `config_value` text COLLATE utf8mb4_unicode_ci COMMENT '配置值',
  37. `config_type` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'string' COMMENT '类型: int/string/bool/json',
  38. `app_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属应用',
  39. `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置描述',
  40. `is_system` tinyint(1) DEFAULT '0' COMMENT '是否系统配置',
  41. `is_editable` tinyint(1) DEFAULT '1' COMMENT '是否可编辑',
  42. `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
  43. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  44. `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  45. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  46. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  47. PRIMARY KEY (`id`, `his_created_at`),
  48. KEY `idx_his_created_at` (`his_created_at`),
  49. KEY `idx_config_key` (`config_key`)
  50. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4_unicode_ci COMMENT='系统配置表历史记录';
  51. -- ==================== API Nonce历史记录表 ====================
  52. -- ----------------------------
  53. -- Table structure for api_nonces_his (API Nonce表历史记录)
  54. -- ----------------------------
  55. DROP TABLE IF EXISTS `api_nonces_his`;
  56. CREATE TABLE `api_nonces_his` (
  57. `id` int(11) NOT NULL COMMENT '原表主键ID',
  58. `nonce` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '随机字符串',
  59. `endpoint` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '接口路径',
  60. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '会话ID',
  61. `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  62. `expires_at` datetime NOT NULL COMMENT '过期时间',
  63. `his_created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '历史记录创建时间',
  64. `his_operation` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作类型: INSERT/UPDATE/DELETE',
  65. PRIMARY KEY (`id`, `his_created_at`),
  66. KEY `idx_his_created_at` (`his_created_at`),
  67. KEY `idx_nonce` (`nonce`)
  68. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API Nonce表历史记录';
  69. SET FOREIGN_KEY_CHECKS = 1;