Mysql
 sql >> Database >  >> RDS >> Mysql

Errore MySql:impossibile aggiornare la tabella nella funzione/trigger memorizzata perché è già utilizzata dall'istruzione che ha richiamato questa funzione/trigger memorizzata

Non è possibile modificare una tabella mentre si attiva il trigger INSERT. INSERT potrebbe eseguire alcuni blocchi che potrebbero causare un deadlock. Inoltre, l'aggiornamento della tabella da un trigger provocherebbe l'attivazione dello stesso trigger in un ciclo ricorsivo infinito. Entrambi questi motivi sono il motivo per cui MySQL ti impedisce di farlo.

Tuttavia, a seconda di ciò che stai cercando di ottenere, puoi accedere ai nuovi valori utilizzando NEW.fieldname o anche i vecchi valori, se stai effettuando un AGGIORNAMENTO, con OLD.

Se avevi una riga denominata full_brand_name e volevi usare le prime due lettere come nome breve nel campo small_name potresti usare:

CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames`
FOR EACH ROW BEGIN
  SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2)))
END