在一个项目中,数据库是mysql,对一个表的删除同时要关联者其他两个表,如:一张客户业务表,CREATE TABLE `jz_gbmes` (
`g_id` int(10) unsigned NOT NULL auto_increment,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`gt_id` int(11) unsigned default NULL,
`remindtype` int(11) default NULL,// 0 year;1 month;2 seseaon
`stmonth` varchar(10) default NULL,
`stday` varchar(10) default NULL,
`endmonth` varchar(10) default NULL,
`enday` varchar(10) default NULL,
`account_id` int(11) default NULL
.....
}
一张操作记录表,每次完成业务都会有一条业务记录:
CREATE TABLE `jz_stream` (
`op_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`bs_time` varchar(10) default NULL,
......
}
每个月都会自动生成一张业务计划表:
CREATE TABLE `jz_business_plan` (
`bp_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`results` varchar(10) default NULL,
......
}
在删除客户业务时,首先判断一下jz_stream中有没有当前月的该客户的记录,如果没有就删除业务计划表中客户业务计划的记录,用触发器我该怎么做呢?删除操作条件的传递很困惑,老大,有没有好的建议?谢谢!
`g_id` int(10) unsigned NOT NULL auto_increment,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`gt_id` int(11) unsigned default NULL,
`remindtype` int(11) default NULL,// 0 year;1 month;2 seseaon
`stmonth` varchar(10) default NULL,
`stday` varchar(10) default NULL,
`endmonth` varchar(10) default NULL,
`enday` varchar(10) default NULL,
`account_id` int(11) default NULL
.....
}
一张操作记录表,每次完成业务都会有一条业务记录:
CREATE TABLE `jz_stream` (
`op_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`bs_time` varchar(10) default NULL,
......
}
每个月都会自动生成一张业务计划表:
CREATE TABLE `jz_business_plan` (
`bp_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`results` varchar(10) default NULL,
......
}
在删除客户业务时,首先判断一下jz_stream中有没有当前月的该客户的记录,如果没有就删除业务计划表中客户业务计划的记录,用触发器我该怎么做呢?删除操作条件的传递很困惑,老大,有没有好的建议?谢谢!
假设jz_stream和jz_gbmes和jz_plan 通过一个ID关联。我没有看出来你这里面是怎么个关系。暂时如我给的例子。DELIMITER $$CREATE
TRIGGER `<Database Name>`.`ff` AFTER DELETE
ON `<Database Name>`.`jz_gbmes`
FOR EACH ROW BEGIN
if not exists (select 1 from jz_stream where ID = OLD.ID) then
delete from jz_plan where ID = OLD.ID;
end if;
END$$DELIMITER ;
我现在把表这样修改:
一张客户业务表,CREATE TABLE `jz_gbmes` (
`g_id` int(10) unsigned NOT NULL auto_increment,
`gb_id` int(11) unsigned default NULL,
`bs_id` int(11) unsigned default NULL,
`gt_id` int(11) unsigned default NULL,
`remindtype` int(11) default NULL,// 0 year;1 month;2 seseaon
`stmonth` varchar(10) default NULL,
`stday` varchar(10) default NULL,
`endmonth` varchar(10) default NULL,
`enday` varchar(10) default NULL,
`account_id` int(11) default NULL
.....
}
一张操作记录表,每次完成业务都会有一条业务记录:
CREATE TABLE `jz_stream` (
`op_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`g_id` int(11) unsigned default NULL,
`bs_time` varchar(10) default NULL,
......
}
一张操作记录表,每次完成业务都会有一条业务记录:
CREATE TABLE `jz_stream` (
`op_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`g_id` int(11) unsigned default NULL,
`bs_time` varchar(10) default NULL,
......
}
每个月都会自动生成一张业务计划表:
CREATE TABLE `jz_business_plan` (
`bp_id` int(10) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned default NULL,
`g_id` int(11) unsigned default NULL,
`results` varchar(10) default NULL,
......
}
是不是这样以后,再调用你说的那种方法就可以了?