INSERT ट्रिगर सक्रिय होने पर आप तालिका नहीं बदल सकते। INSERT कुछ लॉकिंग कर सकता है जिसके परिणामस्वरूप गतिरोध हो सकता है। साथ ही, एक ट्रिगर से तालिका को अपडेट करने से एक ही ट्रिगर फिर से एक अनंत रिकर्सिव लूप में आग लग जाएगा। इन दोनों कारणों से MySQL आपको ऐसा करने से रोकता है।
हालांकि, आप जो हासिल करने की कोशिश कर रहे हैं, उसके आधार पर, आप NEW.fieldname या यहां तक कि पुराने मानों का उपयोग करके नए मानों तक पहुंच सकते हैं--यदि कोई अद्यतन कर रहे हैं--पुराने के साथ।
अगर आपके पास 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