Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL AUTO_INCREMENT với các ví dụ

Hãy cho chúng tôi hiểu cách ATUO_INCREMENT hoạt động -

Thuộc tính AUTO_INCREMENT được sử dụng để tạo mã nhận dạng duy nhất cho các hàng mới. Hãy để chúng tôi xem câu lệnh này hoạt động như thế nào. Trước đó, hãy xem xét truy vấn dưới đây -

Truy vấn

CREATE TABLE tableName (
   id MEDIUMINT NOT NULL AUTO_INCREMENT,
   name CHAR(30) NOT NULL,
   PRIMARY KEY (id)
);
INSERT INTO tableName (name) VALUES
(‘val1’),('val2'),('val3'),
('val4');

SELECT * FROM tableName;

Đầu ra

+----+---------+
| id | name    |
+----+---------+
| 1  | val1    |
| 2  | val2    |
| 3  | val3    |
| 4  | val4    |
+----+---------+

Trong truy vấn trên, không có giá trị nào được chỉ định cho cột ‘AUTO_INCREMENT’, do đó MySQL tự động gán một chuỗi số cho cột ‘id’. Giá trị 0 cũng có thể được chỉ định rõ ràng để dãy số bắt đầu từ 0. Điều này chỉ có thể được thực hiện nếu chế độ SQL ‘KHÔNG CÓ GIÁ TRỊ TỰ ĐỘNG ON ZERO’ không được bật.

  • Nếu một cột được khai báo là "NOT NULL", có thể gán NULL cho cột đó để tạo ra một chuỗi số.

  • Khi bất kỳ giá trị nào được chèn vào cột AUTO_INCREMENT, cột sẽ được đặt thành giá trị đó và chuỗi cũng được đặt lại để tự động tạo giá trị, trong phạm vi tuần tự từ giá trị cột lớn nhất.

  • Có thể cập nhật cột ‘AUTO_INCREMENT’ hiện có, cột này cũng sẽ đặt lại trình tự ‘AUTO_INCREMENT ’.

  • ‘AUTO_INCREMENT được tạo tự động gần đây nhất; có thể được truy xuất giá trị bằng cách sử dụng hàm‘LAST_INSERT_ID () ’trong SQL hoặc sử dụng‘ mysql_insert_id () ’là một hàm API C.

  • Các hàm này dành riêng cho kết nối, có nghĩa là giá trị trả về của chúng không bị ảnh hưởng bởi các kết nối khác thực hiện các thao tác chèn.

  • Có thể sử dụng kiểu dữ liệu số nguyên nhỏ nhất cho cột ‘AUTO_INCREMENT’, đủ lớn để chứa giá trị trình tự lớn nhất mà người dùng yêu cầu.

  • Khi cột đạt đến phạm vi trên của kiểu dữ liệu, một nỗ lực khác được thực hiện để tạo một chuỗi số. Nhưng điều này không thành công.

Do đó, hãy sử dụng thuộc tính UNSIGNED nếu có thể để cho phép phạm vi giá trị lớn hơn trong cột AUTO_INCREMENT giá trị.