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

एक mysql तालिका में एक प्रकार का ऑटो वेतन वृद्धि कॉलम जोड़ना

MySQL पूर्णांकों के अलावा कुछ भी स्वत:वृद्धि नहीं करता है। आप किसी स्ट्रिंग को ऑटो-इन्क्रीमेंट नहीं कर सकते।

आप ऑटो-इन्क्रीमेंट मान के आधार पर स्ट्रिंग को पॉप्युलेट करने के लिए ट्रिगर का उपयोग नहीं कर सकते। इसका कारण यह है कि ऑटो-इन्क्रीमेंट मान अभी तक "ट्रिगर के निष्पादित होने से पहले" उत्पन्न नहीं हुआ है, और "बाद" ट्रिगर में कॉलम बदलने में बहुत देर हो चुकी है।

मेरा जवाब https://stackoverflow.com/a/26899091/20860 पर भी देखें।

आप शायद इसी कारण से वर्चुअल कॉलम का उपयोग नहीं कर सकते।

mysql> create table t (id int(5) zerofill auto_increment primary key, 
    virtcolumn char(8) as (concat('log-', id)));
ERROR 3109 (HY000): Generated column 'virtcolumn' cannot refer to auto-increment column.

आपको पूर्णांक ऑटो-इन्क्रीमेंट देना होगा, और फिर बाद में डालने के बाद अपनी "लॉग-एनएनएनएनएन" स्ट्रिंग को पॉप्युलेट करने के लिए अद्यतन का उपयोग करना होगा।

CREATE TABLE `t` (
  `id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `log` char(9) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `t` () VALUES ();

UPDATE `t` SET `log` = CONCAT('log-', `id`) WHERE `id` = LAST_INSERT_ID();

SELECT * FROM `t`;
+-------+-----------+
| id    | log       |
+-------+-----------+
| 00001 | log-00001 |
+-------+-----------+



  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. विदेशी कुंजी बाधा गलत तरीके से बनाई गई है?

  3. बैकअप Mysql डेटाबेस

  4. MySQL में instr () में केस संवेदनशीलता का उपयोग कैसे करें?

  5. एसक्यूएल सर्वर 2008 में अंतिम डाली गई आईडी प्राप्त करें