Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL auto_increment_increment

Versi yang diperbarui:hanya satu id lapangan digunakan. Ini sangat mungkin bukan atom, jadi gunakan di dalam transaksi jika Anda membutuhkan konkurensi:

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;

"Solusi" lama yang tidak berfungsi (pemicu penyisipan sebelum tidak dapat melihat nilai kenaikan otomatis saat ini):

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. Bagaimana saya bisa meneruskan data web penyimpanan lokal yang disimpan ke skrip php?

  2. Permintaan pembaruan MySQL dengan pernyataan yang disiapkan memberikan kesalahan

  3. MySql:Hitung berapa kali kata-kata muncul di kolom

  4. Tanggal pembaruan + satu tahun di mysql

  5. Mengabaikan apostrof dalam pencarian mysql