Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка в MySql:Не може да се актуализира таблицата в съхранената функция/тригера, защото вече се използва от израз, който е извикал тази съхранена функция/тригер

Не можете да промените таблица, докато спусъкът INSERT се задейства. INSERT може да извърши някакво заключване, което може да доведе до блокиране. Също така, актуализирането на таблицата от тригер ще доведе до повторно задействане на същия тригер в безкраен рекурсивен цикъл. И двете от тези причини са причината MySQL да ви пречи да направите това.

Въпреки това, в зависимост от това, което се опитвате да постигнете, можете да получите достъп до новите стойности, като използвате NEW.fieldname или дори старите стойности – ако правите АКТУАЛИЗИРАНЕ – със OLD.

Ако сте имали ред с име full_brand_name и искахте да използвате първите две букви като кратко име в полето small_name можете да използвате:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите времето от низ в MySQL

  2. изчислете сумата от типа време с помощта на sql

  3. java.sql.SQLException Индекс на параметър извън обхвата (1> брой параметри, което е 0)

  4. Форматиране на командния ред на MySQL с UTF8

  5. MySQL извлича променлива от Съхранена процедура в PHP PDO