zoukankan      html  css  js  c++  java
  • mysql使用触发器解决冗余字段未保存的问题

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

    drop TRIGGER if EXISTS 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

    2.使用触发器当一张表的某个字段更新为某个值时,更新另一张表的某个字段

    drop TRIGGER if EXISTS tri_name;
    CREATE TRIGGER tri_name AFTER UPDATE ON class FOR EACH ROW
    BEGIN
    IF new.class_name = '99' THEN
        UPDATE student
    SET student.student_name = '99' WHERE new.class_id = student.class_id;
    end if;
    END;
  • 相关阅读:
    分布式任务调度 xxl-job
    【线上】 select * from xxoo where 1=1应用挂掉
    【死磕ES】七、基础检索
    【死磕ES】四、基本操作
    【死磕ES】三、基本概念
    【死磕ES】二、搭建环境
    Mac共享文件夹
    微信小程序下拉刷新,上拉加载
    微信小程序textarea输入框出现[object Object]
    微信小程序official-account的使用
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/11993563.html
Copyright © 2011-2022 走看看