2009-05-15 9 views
5

Ho una domanda come segue:Perché ottengo un errore "Questa versione di MySQL non supporta ancora ..."?

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$$ 

durante l'esecuzione ricevo

Questa versione di MySQL non supporta ancora 'più trigger con lo stesso tempo di azione e di eventi per un tavolo'

questo errore può fornire una soluzione a questo?

risposta

8

ho già lì immagino è un AFTER UPDATE trigger su quel tavolo, ma non si chiama TR_SCIN_BANK_UPD, il che significa che la vostra linea DROP TRIGGER IF EXISTS non fa nulla.

0

sì mysql non supporta questo se si utilizza lo stesso evento con nome trigger diverso e allo stesso tempo.

meglio, per questo si dovrebbe usare se la condizione qui: come di seguito:

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

Non penso che la sintassi dell'aggiornamento sia corretta. –

+0

funziona per me signore ... mi dici cosa ti sta facendo pensare in questo modo – user21546

1

Aggiornamento Mysql alla versione 5.6.27 risolto per me: la versione

Server: 5.6.27-0ubuntu0. 14.04.1 (Ubuntu)

Problemi correlati