Tự động tăng IN MySQL
Thuộc tính Show Các cột Mỗi bảng chỉ có thể có một cột SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+1 hoặc SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+2). Trong một số công cụ lưu trữ (bao gồm cả InnoDB mặc định), nếu khóa bao gồm nhiều cột, thì cột AUTO_INCREMENT phải là cột đầu tiên. Các công cụ lưu trữ cho phép đặt cột ở nơi khác là Aria, MyISAM, MERGE, Spider, TokuDB, BLACKHOLE, FederatedX và FederatedCREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('fox'),('whale'),('ostrich'); SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+4 là bí danh của SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+5 CREATE TABLE t (id SERIAL, c CHAR(1)) ENGINE=InnoDB; SHOW CREATE TABLE t \G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `c` char(1) DEFAULT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Đặt hoặc Thay đổi Giá trị Auto_IncrementBạn có thể sử dụng câu lệnh SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+6 để gán giá trị mới cho tùy chọn bảng SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+7 hoặc đặt biến hệ thống máy chủ để thay đổi giá trị AUTO_INCREMENT tiếp theo được phiên hiện tại chèn vàoCó thể sử dụng SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+9 để xem giá trị AUTO_INCREMENT cuối cùng được phiên hiện tại chèn vàoALTER TABLE animals AUTO_INCREMENT=8; INSERT INTO animals (name) VALUES ('aardvark'); SELECT * FROM animals; +----+-----------+ | id | name | +----+-----------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | | 8 | aardvark | +----+-----------+ SET insert_id=12; INSERT INTO animals (name) VALUES ('gorilla'); SELECT * FROM animals; +----+-----------+ | id | name | +----+-----------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | | 8 | aardvark | | 12 | gorilla | +----+-----------+ InnoDBCho đến khi MariaDB 10. 2. 3, InnoDB đã sử dụng bộ đếm tăng tự động được lưu trữ trong bộ nhớ. Khi máy chủ khởi động lại, bộ đếm được khởi tạo lại thành giá trị cao nhất được sử dụng trong bảng, điều này sẽ hủy bỏ tác dụng của bất kỳ tùy chọn AUTO_INCREMENT = N nào trong các câu lệnh của bảng Từ MariaDB 10. 2. 4, hạn chế này đã được dỡ bỏ và AUTO_INCREMENT vẫn tồn tại Xem thêm Xử lý AUTO_INCREMENT trong InnoDB Đặt giá trị rõ ràngCó thể chỉ định giá trị cho cột Nếu giá trị mới cao hơn giá trị tối đa hiện tại, giá trị Ví dụ sau minh họa những hành vi này CREATE TABLE t (id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE = InnoDB; INSERT INTO t VALUES (NULL); SELECT id FROM t; +----+ | id | +----+ | 1 | +----+ INSERT INTO t VALUES (10); -- higher value SELECT id FROM t; +----+ | id | +----+ | 1 | | 10 | +----+ INSERT INTO t VALUES (2); -- lower value INSERT INTO t VALUES (NULL); -- auto value SELECT id FROM t; +----+ | id | +----+ | 1 | | 2 | | 10 | | 11 | +----+ Công cụ lưu trữ ARCHIVE không cho phép chèn giá trị thấp hơn giá trị tối đa hiện tại Giá trị bị mấtCột AUTO_INCREMENT thường thiếu giá trị. Điều này xảy ra bởi vì nếu một hàng bị xóa hoặc giá trị AUTO_INCREMENT được cập nhật rõ ràng, thì các giá trị cũ sẽ không bao giờ được sử dụng lại. Câu lệnh REPLACE cũng xóa một hàng và giá trị của nó bị lãng phí. Với InnoDB, các giá trị có thể được bảo lưu bởi một giao dịch; Do đó, các giá trị AUTO_INCREMENT có thể được sử dụng để sắp xếp kết quả theo thứ tự thời gian, nhưng không phải để tạo chuỗi số Để làm cho master-master hoặc Galera an toàn khi sử dụng Làm cách nào để nhận giá trị gia tăng tự động trong MySQL?Có thể đạt được giá trị của cột sử dụng AUTO_INCREMENT sau câu lệnh INSERT theo một số cách khác nhau. Để lấy giá trị ngay sau INSERT , sử dụng truy vấn SELECT với hàm LAST_INSERT_ID() .
Làm cách nào để đặt khóa chính tăng tự động trong MySQL?Bạn có thể đặt trường Khóa chính tăng tự động của MySQL thông qua cú pháp sau. TẠO BẢNG tên_bảng ( kiểu dữ liệu cột1 NOT NULL AUTO_INCREMENT, kiểu dữ liệu cột2 [ NULL. CÓ GIÁ TRỊ ],. );
Làm cách nào để bắt đầu tăng tự động từ 0 trong MySQL?Theo mặc định, cột AUTO_INCREMENT bắt đầu từ 1. Bạn cũng có thể gán rõ ràng 0 cho cột để tạo số thứ tự tiếp theo trừ khi chế độ SQL NO_AUTO_VALUE_ON_ZERO được bật . Gán NULL cho cột cũng sẽ tạo ra số thứ tự tiếp theo, miễn là cột được khai báo NOT NULL.
Tôi có thể tự động tăng hai cột MySQL không?Ghi chú MyISAM
. Trong trường hợp này, giá trị được tạo cho cột AUTO_INCREMENT được tính là MAX( auto_increment_column ) + 1 WHERE tiền tố= tiền tố đã cho. Điều này rất hữu ích khi bạn muốn đưa dữ liệu vào các nhóm có thứ tự. you can specify AUTO_INCREMENT on a secondary column in a multiple-column index. In this case, the generated value for the AUTO_INCREMENT column is calculated as MAX( auto_increment_column ) + 1 WHERE prefix= given-prefix . This is useful when you want to put data into ordered groups. |