जिस तरह से आप किसी कॉलम में मान सेट करने का प्रयास कर रहे हैं वह एक अद्यतन है। क्योंकि आप इसे सम्मिलित करने के बाद कर रहे हैं ऑपरेशन पूरा हो गया है।
आपको वास्तव में 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
बैच इंसर्ट में फ़ील्ड मान विश्वसनीय नहीं लगते हैं।