sql >> Databáze >  >> RDS >> Mysql

Chyba MySql:Nelze aktualizovat tabulku v uložené funkci/spouštěči, protože ji již používá příkaz, který tuto uloženou funkci/spouštěč vyvolal

Během spouštění spouštěče INSERT nemůžete změnit tabulku. INSERT může provést určité zamykání, což by mohlo vést k uváznutí. Aktualizace tabulky ze spouštěče by také způsobila opětovné spouštění stejného spouštěče v nekonečné rekurzivní smyčce. Oba tyto důvody jsou důvodem, proč vám v tom MySQL brání.

V závislosti na tom, čeho se snažíte dosáhnout, můžete k novým hodnotám přistupovat pomocí NEW.fieldname nebo dokonce ke starým hodnotám – pokud provádíte UPDATE – pomocí OLD.

Pokud jste měli řádek s názvem full_brand_name a chtěli jste použít první dvě písmena jako krátký název v poli small_name můžete použít:

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. Operátor neexistuje:integer =? při používání Postgres

  2. Je časové pásmo java.sql.Timestamp specifické?

  3. Barman 2.11:barman-cloud-restore a barman-cloud-wal-restore

  4. Použití názvů služeb Oracle s SQLAlchemy