project表:project_name project_state start_date
-------------------------------------------------
测试工序 未开始
喷漆 正在进行中 2013-06-26
包装 正在进行中 2013-06-26
质量抽查 未开始
怎么在插入数据的时候,判断插入的列project_state如果为"正在进行中",则start_date为CURRENT_DATE,如果project_state为“未开始”,则不需插入。可以实现吗?
-------------------------------------------------
测试工序 未开始
喷漆 正在进行中 2013-06-26
包装 正在进行中 2013-06-26
质量抽查 未开始
怎么在插入数据的时候,判断插入的列project_state如果为"正在进行中",则start_date为CURRENT_DATE,如果project_state为“未开始”,则不需插入。可以实现吗?
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
insert into project(project_name,project_state,start_date) values('喷漆','正在进行中',CURRENT_DATE)2、如果当我下拉project_state,选择项目状态为"未开始",则执行:(无须插入start_date列)
insert into project(project_name,project_state) values('测试工序','未开始')
`project_name` varchar(100) NOT NULL,
`project_state` varchar(50) DEFAULT '未开始',
`startdate` date DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8$$
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
IF new.project_state='正在进行中' THEN
SET new.start_date=CURRENT_DATE;
ELSE
SET new.start_date=NULL;
END IF;
END$$
DELIMITER ;
create trigger testref before isnert on test1
for each row
begin
if new.project_state='正在进行中' then
set new.start_date=current_date;
else
set new.start_date=null;
end if;
end$$
delimiter;