mysql使用触发器解决冗余字段未保存的问题

在t_trans_surgery_info 表中保存其他关联表的冗余字段

drop TRIGGER auto_set_value;

CREATE TRIGGER auto_set_value BEFORE INSERT ON t_trans_surgery_info FOR EACH ROW
begin
SET new.patient_id = (
    SELECT
        p.patient_id
    FROM
        t_trans_patient p
    LEFT JOIN t_trans_seek_medical m ON p.patient_id = m.patient_id
    WHERE
        m.medical_id = new.medical_id
);

SET new.his_patient_id = (
    SELECT
        p.his_patient_id
    FROM
        t_trans_patient p
    LEFT JOIN t_trans_seek_medical m ON p.patient_id = m.patient_id
    WHERE
        m.medical_id = new.medical_id
);

SET new.patient_name = (
    SELECT
        p.patient_name
    FROM
        t_trans_patient p
    LEFT JOIN t_trans_seek_medical m ON p.patient_id = m.patient_id
    WHERE
        m.medical_id = new.medical_id
);

SET new.patient_pym = (
    SELECT
        p.pym
    FROM
        t_trans_patient p
    LEFT JOIN t_trans_seek_medical m ON p.patient_id = m.patient_id
    WHERE
        m.medical_id = new.medical_id
);

SET new.patient_type = (
    SELECT
        m.patient_type
    FROM
        t_trans_seek_medical m
    WHERE
        m.medical_id = new.medical_id
);

SET new.opt_room_name = (
    SELECT
        r.room_name
    FROM
        t_base_operation_room r
    WHERE
        r.opt_room_id = new.opt_room_id
);

SET new.opt_room_pym = (
    SELECT
        r.pym
    FROM
        t_base_operation_room r
    WHERE
        r.opt_room_id = new.opt_room_id
);

SET new.opt_room_no = (
    SELECT
        r.room_no
    FROM
        t_base_operation_room r
    WHERE
        r.opt_room_id = new.opt_room_id
);

SET new.dept_pym = (
    SELECT
        d.pym
    FROM
        t_base_dept d
    WHERE
        d.dept_id = new.dept_id
);

SET new.dept_name = (
    SELECT
        d.dept_name
    FROM
        t_base_dept d
    WHERE
        d.dept_id = new.dept_id
);

end

猜你喜欢

转载自www.cnblogs.com/guanxiaohe/p/11993563.html