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;
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;
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' ))方式赋值 !