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

क्या आप MySQL में ऑटो इंक्रीमेंट वैल्यू को एक स्टेटमेंट में एक्सेस कर सकते हैं?

दूसरी तालिका बनाने की कोई आवश्यकता नहीं है, और तालिका के auto_increment मान के अनुसार अधिकतम () में समस्याएँ होंगी, यह करें:

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   DECLARE next_id;
   SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
   SET NEW.field = next_id;
END

मैं अगला_आईडी वैरिएबल घोषित करता हूं क्योंकि आमतौर पर इसका इस्तेमाल किसी अन्य तरीके से किया जाएगा (*), लेकिन आप सीधे कर सकते हैं new.field=(select ...)

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=(SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
END

इसके अलावा (चयन स्ट्रिंग फ़ील्ड) के मामलों में आप CAST मान का उपयोग कर सकते हैं;

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=CAST((SELECT aStringField FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl') AS UNSIGNED);
END

(*) इमेज को अपने आप नाम देने के लिए:

SET NEW.field = CONCAT('image_', next_id, '.gif');

(*) हैश बनाने के लिए:

SET NEW.field = CONCAT( MD5( next_id ) , MD5( FLOOR( RAND( ) *10000000 ) ) );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP ईमेल सत्यापन लिंक के लिए सबसे आसान तरीका

  2. MySQL में पिछले 15 दिनों के रिकॉर्ड कैसे प्राप्त करें

  3. गैर-वस्तु की संपत्ति प्राप्त करने की कोशिश कर रहा है - CodeIgniter

  4. SQL डेटाबेस तालिका में nth पंक्ति का चयन कैसे करें?

  5. पूर्ण पाठ खोज इंजन की तुलना - Lucene, Sphinx, Postgresql, MySQL?