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

MySQL ट्रिगर्स का उपयोग करके नया रिकॉर्ड डालने के बाद तालिका कॉलम अपडेट करें

जिस तरह से आप किसी कॉलम में मान सेट करने का प्रयास कर रहे हैं वह एक अद्यतन है। क्योंकि आप इसे सम्मिलित करने के बाद कर रहे हैं ऑपरेशन पूरा हो गया है।

आपको वास्तव में before . की आवश्यकता है चालू कर देना।

और उसी तालिका के प्राथमिक कुंजी कॉलम का वही नया ऑटो इंक्रीमेंटेड मान असाइन करने के लिए, आप इसे information_schema.tables से बेहतर तरीके से प्राप्त कर सकते हैं .

उदाहरण :

delimiter //
drop trigger if exists bi_table_name //

create trigger bi_table_name before insert on table_name
for each row begin
  set @auto_id := ( SELECT AUTO_INCREMENT 
                    FROM INFORMATION_SCHEMA.TABLES
                    WHERE TABLE_NAME='table_name'
                      AND TABLE_SCHEMA=DATABASE() ); 
  set new.priority= @auto_id;
end;
//

delimiter ;

नोट :सुनिश्चित करें कि आपके पास समान नाम और/या क्रिया के साथ कोई पूर्व-निर्धारित ट्रिगर नहीं है। यदि कुछ हैं, तो नया बनाने से पहले उन्हें छोड़ दें।

टिप्पणियां :
के अनुसार last_insert_id() पर mysql दस्तावेज़ीकरण ,

इसलिए, last_insert_id() . के आधार पर और auto_increment बैच इंसर्ट में फ़ील्ड मान विश्वसनीय नहीं लगते हैं।



  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 Group_Concat रिपीटिंग वैल्यूज

  2. Mysql में किसी विशेष तालिका के लिए 2 से ऑटो वृद्धि कैसे करें

  3. एकाधिक छोटे प्रश्न बनाम एक लंबी क्वेरी। कौन सा अधिक कुशल है?

  4. InnoDB चयन करें ... अद्यतन विवरण के लिए एक तालिका में सभी पंक्तियों को लॉक करना

  5. इस संबंध से प्रविष्टियों का चयन कैसे करें?