Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 插入前触发_Mysql - Fatal编程技术网

Mysql 插入前触发

Mysql 插入前触发,mysql,Mysql,是否可以在表中插入的数据上插入控件?以满足提供的特定条件的方式,否则 drop function Presente; delimiter // create function Presente( Persona_Da_Cercare varchar(16), Data_Legge date) returns int begin declare risultato int; select count(*) into risultato from PARLAMENTARI

是否可以在表中插入的数据上插入控件?以满足提供的特定条件的方式,否则

drop function Presente;
delimiter //
create function Presente( Persona_Da_Cercare varchar(16), Data_Legge date) returns int
begin

    declare risultato int;

    select count(*) into risultato
    from PARLAMENTARI_IN_CARICA as pic
    where Persona_Da_Cercare = pic.Persona and data_Legge >= pic.Data_Eletto;

    if risultato = 0
    then
        select count(*) into risultato
        from STORICO_PARLAMENTARI as sp
        where Persona_Da_Cercare = sp.Persona and data_Legge >= sp.Data_Inizio and data_Legge <= sp.Data_Fine;
    end if;
    return risultato;

end//


set @ultima_legge bigint;
set @ultimo_parlamentare varchar(16);
set @data_legge date;


drop trigger if exists Ultimo_Voto;
delimiter $$
create trigger Ultimo_Voto before insert on VOTO_PALESE
for each row
begin

    set @ultima_legge = new.Legge;
    set @ultimo_parlamentare = new.parlamentare;
    set @data_legge = (select Data_Approvazione from LEGGI where Cod_Legge = new.Legge);

end $$


drop trigger if exists Controllo_Voto_Palese;
delimiter $$
create trigger Controllo_Voto_Palese after insert on VOTO_PALESE
for each row
BEGIN

    IF Presente(@ultimo_parlamentare, @data_legge) = 0 THEN
        delete from VOTO_PALESE where Legge = @ultima_legge AND Parlamentare = @ultimo_parlamentare;
    END IF; 

END $$


insert into VOTO_PALESE(Legge, Parlamentare, Voto) values(770, 'MSRMRC01C14L378X', 'astenuto');

我不明白问题出在哪里

错误消息很明显,您无法更新、删除或插入触发触发器的同一个表。好的,但是无法检查我要插入的数据?当您插入新行时,触发器提示您可以使用new.columnname检查每一列,并对其进行修改。您不能在同一个表中删除、更新或插入。如果NEW.column=1,则使用;如果SET NEW.column=column+1错误消息明确,则无法更新、删除或插入到触发触发器的同一个表中。好的,但无法检查我要插入的数据?插入新行时,触发器提示您可以使用NEW.columnname检查每一列,并对其进行修改。您不能在同一个表中删除、更新或插入。如果NEW.column=1,则使用,或者设置NEW.column=column+1
Error Code: 1442. Can't update table 'voto_palese' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.