2009-05-15 10 views
5

Tengo una consulta como la siguiente:¿Por qué obtengo una "Esta versión de MySQL aún no admite el error '...'"?

delimiter $$ 
DROP TRIGGER IF EXISTS TR_SCIN_BANK_UPD$$ 
CREATE TRIGGER TR_SCIN_BANK_UPD 
AFTER UPDATE ON SCIN_BANK 
FOR EACH ROW 
BEGIN 
    IF OLD.BANK_NAME != NEW.BANK_NAME THEN 
    INSERT into SCIN_BANK_LOG SET BANK_ID=OLD.BANK_ID, BANK_NAME=OLD.BANK_NAME, LAST_UPD_USER_ID=OLD.LAST_UPD_USER_ID, LAST_UPD_TS=now(); 
    END IF; 
    IF OLD.BANK_DESC != NEW.BANK_DESC THEN 
    INSERT into SCIN_BANK_LOG SET BANK_ID=OLD.BANK_ID, BANK_DESC=OLD.BANK_DESC, LAST_UPD_USER_ID=OLD.LAST_UPD_USER_ID, LAST_UPD_TS=now(); 
    END IF; 
END$$ 

al ejecutar consigo

Esta versión de MySQL todavía no soporta 'disparadores múltiples con el mismo tiempo de acción y el evento de una tabla'

este error puede proporcionar una solución para esto?

Respuesta

8

Supongo que ya existe un activador AFTER UPDATE en esa tabla, pero no se llama TR_SCIN_BANK_UPD, lo que significa que su línea DROP TRIGGER IF EXISTS no hace nada.

0

sí mysql no admite esto si usa el mismo evento con diferente nombre de desencadenador y al mismo tiempo.

mejor, para ello se debe usar si la condición aquí: como a continuación:

delimiter $$ 
create trigger trigger_name 
AFTER insert 
on t1 
for each row 
begin 
    if new.col1 like '%Sabcd%' 
    then 
    update t2 inner join t3 on t2.col1=t1.col1 
    set t2.col2=0 ; 
    end if; 
    if new.col1 like '%dcba%' 
    then 
    update t2 inner join t3 on t2.col1=t1.col1 
    set t2.col2=02; 
    end if; 
end; 
$$ 
+0

No creo que la sintaxis de actualización sea correcta. –

+0

funciona para mí señor ... dime qué te hace pensar así – user21546

1

MySQL a la versión 5.6.27 soluciona por mí: Versión

Servidor: 5.6.27-0ubuntu0. 14.04.1 (Ubuntu)

Cuestiones relacionadas