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

MYSQL auto_increment_increment

अपडेट किया गया संस्करण:केवल एक id क्षेत्र का प्रयोग किया जाता है। यह संभवत:परमाणु नहीं है, इसलिए यदि आपको संगामिति की आवश्यकता है तो लेनदेन के अंदर उपयोग करें:

http://sqlfiddle.com/#!2/a4ed8/1

CREATE TABLE IF NOT EXISTS person (
   id  INT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY ( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TRIGGER insert_kangaroo_id BEFORE INSERT ON person FOR EACH ROW BEGIN
  DECLARE newid INT;

  SET newid = (SELECT AUTO_INCREMENT
               FROM information_schema.TABLES
               WHERE TABLE_SCHEMA = DATABASE()
               AND TABLE_NAME = 'person'
              );

  IF NEW.id AND NEW.id >= newid THEN
    SET newid = NEW.id;
  END IF;

  SET NEW.id = 5 * CEILING( newid / 5 );
END;

पुराना, काम नहीं कर रहा "समाधान" (पहले डालने वाला ट्रिगर वर्तमान ऑटो इंक्रीमेंट मान नहीं देख सकता):

http://sqlfiddle.com/#!2/f4f9a/1

CREATE TABLE IF NOT EXISTS person (
   secretid  INT NOT NULL AUTO_INCREMENT,
   id        INT NOT NULL,
   PRIMARY KEY ( secretid )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TRIGGER update_kangaroo_id BEFORE UPDATE ON person FOR EACH ROW BEGIN
  SET NEW.id = NEW.secretid * 5;
END;

CREATE TRIGGER insert_kangaroo_id BEFORE INSERT ON person FOR EACH ROW BEGIN
  SET NEW.id = NEW.secretid * 5; -- NEW.secretid is empty = unusuable!
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. SQL 2 टेबल से 1 टेबल में शामिल होता है

  3. MySQL क्रॉस पर हाइबरनेट अपवाद क्वेरी में शामिल हों

  4. हाइबरनेट नामांकित क्वेरी - 3 टेबल में शामिल हों

  5. रेडबीन ओ/आरएम स्टोर की तारीख वर्चर (255) के रूप में है?