-- 卡片管理:卡片独立保存,绑定关系同步到 t_employee.card_no。 CREATE TABLE IF NOT EXISTS `t_card` ( `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '卡片主键', `card_no` varchar(64) NOT NULL COMMENT '卡号', `employee_id` bigint(20) DEFAULT NULL COMMENT '绑定员工主键', `bind_time` datetime DEFAULT NULL COMMENT '绑定时间', `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标识:0正常 1删除', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`card_id`), UNIQUE KEY `uk_card_no` (`card_no`, `del_flag`), KEY `idx_card_employee` (`employee_id`, `del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='卡片管理表'; -- 兼容已有员工卡号,首次执行迁移时自动建立卡片记录。 INSERT INTO `t_card` (`card_no`, `employee_id`, `bind_time`, `del_flag`, `create_by`, `create_time`) SELECT e.`card_no`, e.`employee_id`, e.`update_time`, '0', 'system', NOW() FROM `t_employee` e WHERE e.`card_no` IS NOT NULL AND e.`card_no` <> '' AND e.`del_flag` = '0' AND NOT EXISTS ( SELECT 1 FROM `t_card` c WHERE c.`card_no` = e.`card_no` AND c.`del_flag` = '0' );