Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL त्रुटि:संग्रहीत फ़ंक्शन/ट्रिगर में तालिका को अपडेट नहीं कर सकता क्योंकि यह पहले से ही कथन द्वारा उपयोग किया जाता है जिसने इस संग्रहीत फ़ंक्शन/ट्रिगर को बुलाया

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


  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. MySQL ट्यूटोरियल - MySQL सीखने के लिए एक शुरुआती गाइड

  3. MySQL ऑटोइनक्रिकमेंट कॉलम 10 से कूदता है- क्यों?

  4. PDO::fetchAll बनाम PDO::fetch in a लूप

  5. जावा वेबएप में यूटीएफ -8 कैसे काम कर रहा है?