Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql:错误代码1422,存储函数或触发器中不允许显式或隐式提交_Mysql - Fatal编程技术网

MySql:错误代码1422,存储函数或触发器中不允许显式或隐式提交

MySql:错误代码1422,存储函数或触发器中不允许显式或隐式提交,mysql,Mysql,我已经创建了三个名为MySql的表 紫菜 米卢普尔 mv_采购_数据 然后我创建了一个名为purchase\u data\u mv\u update的存储过程,它截断mv\u purchase\u data的数据 表格和插入表格中的值r\u sisl\u purpurchase和r\u mil\u pur。 其脚本如下 DELIMITER // CREATE PROCEDURE purchase_data_mv_update () BEGIN TRUNCATE TABL

我已经创建了三个名为MySql的表

  • 紫菜
  • 米卢普尔
  • mv_采购_数据
  • 然后我创建了一个名为purchase\u data\u mv\u update的存储过程,它截断mv\u purchase\u data的数据 表格和插入表格中的值r\u sisl\u purpurchaser\u mil\u pur。 其脚本如下

    DELIMITER //
    
    CREATE PROCEDURE purchase_data_mv_update ()
        BEGIN
            TRUNCATE TABLE mv_purchase_data;
            INSERT INTO mv_purchase_data 
    (unit_code, season_cntrl, ryot_code, purchy_number, mill_purchy, vrt_code,vgrp_code, token_date, token_time, gross_date, gross_time,
        tare_date, tare_time, gross, tare, net, joona, amount, vehicle_code, society, tran_type, for_unit, token_type
    )
    SELECT 
        unitcode AS unit_code, season AS season_cntrl, ryot_code, s_purchy AS purchy_number, m_purchy AS mill_pur_no, vrt_Code, vgrp_code,
        arr_date AS token_date, arr_time AS token_time, gross_date, gross_time, tran_date AS tare_date, TIME AS tare_time, gross, tare, net, 
        (gross-tare)joona, amount, p_mode MODE, soc_code, tran_type, CONCAT('0',SUBSTR(s_purchy,1,1)) forunit, '0' token_type
        FROM r_sisl_purpurchase
    UNION ALL   
    SELECT a.unit_code, a.season_cntrl, a.m_grower ryot_code, a.m_ind_no, a.mill_pur_no, a.`m_var` vrt_code, a.`m_categ` vgrp_code,
        b.tk_date token_date, b.tk_time token_time, c.gr_date gross_date, c.gr_time gr_time, a.m_tare_dt tare_date, a.m_tare_tm tare_time,
        a.`m_gross` gross, a.`m_tare` tare, (a.m_gross-a.m_tare-a.m_joona) net, a.`m_joona` joona, a.`m_amount`, a.`m_vehicle_mode` MODE,
        a.`m_society_no`, '1' tran_type, a.`for_unit_code`, a.m_tk_type token_type
    FROM r_mil_pur a, r_token b, r_gross c
    WHERE a.`unit_code` = b.`unit_code`
    AND a.`unit_code` = c.`unit_code`
    AND a.`season_cntrl` = b.`season_cntrl`
    AND a.`season_cntrl` = c.`season_cntrl`
    AND a.`m_ind_no` = b.`tk_indno`
    AND a.`m_ind_no` = c.`gr_ind_no`;
    END
    //
    
    为了运行这个过程,我创建了一个触发器

    Delimiter $$
    Create Trigger run_proc_purchase_data_mv_centre_insert AFTER INSERT ON 'r_sisl_purpurchase' 
    FOR EACH ROW
    BEGIN
       CALL purchase_data_mv_update;
    END;
    $$ 
    
    现在,当我在r\u sisl\u purpulpurchase表中插入数据时,会显示一条错误消息:错误代码:在存储函数或触发器中不允许使用1422显式或隐式提交

    Delimiter $$
    Create Trigger run_proc_purchase_data_mv_centre_insert AFTER INSERT ON 'r_sisl_purpurchase' 
    FOR EACH ROW
    BEGIN
       CALL purchase_data_mv_update;
    END;
    $$ 
    

    若我放下触发器并手动运行存储过程
    调用purchase\u data\u mv\u update
    ,那个么它将在mv\u purchase\u data

    中插入值,并隐式提交。但由于存储函数或触发器中不允许显式或隐式提交,因此引发了一个错误。@Ravinder有任何解决方案吗?不能使用DELETE而不是TRUNCATE吗?TRUNCATE在InnoDB中也相当昂贵。