mysql复制父数据时复制子数据

htrmnn0y  于 2021-06-17  发布在  Mysql
关注(0)|答案(0)|浏览(208)

我有两张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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题