task表:
CREATE TABLE `task` (
  `t_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '任务ID',
  `t_dept_id` int(11) NOT NULL COMMENT '任务所在部门ID',
  `t_user_id` int(11) NOT NULL COMMENT '任务责任人ID',
  `t_num` varchar(15) NOT NULL COMMENT '任务编号',
  `t_name` varchar(40) NOT NULL COMMENT '任务名称',
  `t_demand` text NOT NULL COMMENT '任务要求',
  `t_start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务开始时间',
  `t_finish_time` timestamp NULL DEFAULT NULL COMMENT '任务预期结束时间',
  `t_actual_finish_time` timestamp NULL DEFAULT NULL COMMENT '任务实际结束时间',
  `t_user_email` varchar(30) NOT NULL COMMENT '责任人邮箱',
  `t_state` varchar(4) NOT NULL DEFAULT '1' COMMENT '任务状态 1、开启 2、挂起 3、关闭 4、取消',
  `t_desc` text COMMENT 'task表变化的内容',
  PRIMARY KEY (`t_id`),
  KEY `FK_task_t_dept_id` (`t_dept_id`),
  KEY `FK_task_t_user_id` (`t_user_id`),
  CONSTRAINT `FK_task_t_dept_id` FOREIGN KEY (`t_dept_id`) REFERENCES `dept` (`d_id`),
  CONSTRAINT `FK_task_t_user_id` FOREIGN KEY (`t_user_id`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;dept表:
CREATE TABLE `dept` (
  `d_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门ID',
  `d_name` varchar(20) NOT NULL COMMENT '部门名称',
  `d_ab` varchar(5) NOT NULL COMMENT '部门缩写',
  `d_manager` varchar(20) DEFAULT NULL COMMENT '部门经理',
  `d_desc` text COMMENT '记录部门表dept变化的内容',
  PRIMARY KEY (`d_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

解决方案 »

  1.   

    如果是插入时,自动同步数据,触发器如下 (BEFORE ):
    DELIMITER //
    CREATE TRIGGER `trigger_task_t_num` BEFORE INSERT ON `task`
     FOR EACH ROW BEGIN
      select   d_ab into @dptab from  dept  where  d_id = NEW.t_dept_id limit 1 ;  
     
        set NEW.t_num= concat(@d_ab, , NEW.t_id,FROM_UNIXTIME(  NEW.t_start_time, '%Y%m%d' ));
    END
    //
    DELIMITER ;如果是修改 (其他值在插入时,可能没有值,在修改后才有值),使用update  触发器,只需要在触发器语句中使用 NEW.字段1 ,NEW.字段2 (的length与0比较即可,如果大于0表示有值),之后可以使用  set NEW.t_num= concat(@d_ab, , NEW.t_id,FROM_UNIXTIME(  NEW.t_start_time, '%Y%m%d' ))方式赋值 !
      

  2.   

    谢谢你,你写的很好,其实只要把@d_ab换成@dptab,把你的时间类型换成我windows的类型就可以了。已经实现了,谢谢
      

  3.   

    谢谢你,你写的很好,其实只要把@d_ab换成@dptab,把你的时间类型换成我windows的类型就可以了。已经实现了,谢谢实现了就好,建议看看触发器相关的知识!