我有两张table: bases
(家长)和 base_formula
(孩子)。
我所追求的是复制子数据,当父数据被复制(创建)时。
这是我的加分:
CREATE TABLE `bases` (
`base_id_pk` int(11) NOT NULL,
`base_duplicate` int(11) DEFAULT NULL,
`base_id` int(11) NOT NULL,
`base_desc` varchar(40) NOT NULL,
`base_material` int(11) NOT NULL,
`base_material_percent` varchar(50) DEFAULT NULL,
`target_sg` decimal(4,3) NOT NULL,
`base_material_unit` varchar(4) NOT NULL,
`cost_per_kg` varchar(20) DEFAULT '0',
`bulk_base_liquid_id` int(11) DEFAULT NULL,
`micro_sample` tinyint(4) NOT NULL,
`base_version` varchar(10) NOT NULL,
`mod_by` varchar(100) DEFAULT NULL,
`mod_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`change_reason` varchar(200) DEFAULT NULL,
`superseeds` varchar(100) DEFAULT NULL,
`department` varchar(150) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `base_formula` (
`id` int(11) NOT NULL,
`base_id` int(11) NOT NULL,
`raw_material_id` varchar(1120) NOT NULL,
`percent` decimal(7,4) DEFAULT NULL,
`dispense` int(11) DEFAULT '1',
`ignore_step` int(11) DEFAULT NULL,
`main_ingredient` int(5) NOT NULL DEFAULT '0',
`cost_of_use` decimal(6,3) DEFAULT NULL,
`active_flag` int(5) DEFAULT NULL,
`test` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
``` `base_id` 在 `base_formula` fk是否链接到 `base_id_pk` 在基地上。
我有 `base_duplicate` ,这是一个字段,我将使用它与要从中复制子数据的父id关联。
我在找一个扳机 `BEFORE INSERT` 如果可能的话。我以前的尝试导致mysql错误:
CREATE TRIGGER insert_base_duplication_formula
BEFORE INSERT ON bases
FOR EACH ROW INSERT INTO base_formula(base_id,raw_material_id,percent,dispense,ignore_step,main_ingredient,cost_of_use,active_flag)
SELECT
NEW.base_id_pk,
bf.raw_material_id,
bf.percent,
bf.dispense,
bf.ignore_step,
bf.main_ingredient,
bf.cost_of_use,
0
FROM base_formula bf
WHERE NEW.base_duplicate IS NOT NULL
AND new.base_duplicate=bf.base_id
暂无答案!
目前还没有任何答案,快来回答吧!