Nhận dạng bàn làm việc Mysql

Tùy chọn AUTO_INCREMENT cho phép bạn tự động tạo các số nguyên duy nhất [ID, danh tính, trình tự] cho một cột

Ví dụ nhanh

   -- Define a table with an auto-increment column [id starts at 100]
   CREATE TABLE airlines
   [
      id INT AUTO_INCREMENT PRIMARY KEY, 
      name VARCHAR[90]
   ]
   AUTO_INCREMENT = 100; 
 
   -- Insert a row, ID will be automatically generated
   INSERT INTO airlines [name] VALUES ['United Airlines'];
 
   -- Get generated ID
   SELECT LAST_INSERT_ID[];
   -- Returns: 100

Tổng quan

Giá trị bắt đầu
Mặc định là 1Increment
Luôn luôn 1Cách tạo IDBỏ cột AUTO_INCREMENT trong INSERT hoặc chỉ định NULL hoặc 0Chèn ID rõ ràng
Hạn chếChỉ một cột AUTO_INCREMENT trên mỗi bảngChính . DECIMAL và NUMERIC không được phép. DOUBLE và FLOAT được cho phép nhưng không được dùng nữa.
IDLAST_INSERT_ID cuối cùng trả về giá trị cuối cùng được chèn vào phiên hiện tạiLAST_INSERT_ID trả về ID cho hàng được chèn thành công đầu tiên trong nhiều hàng INSERTGapsNếu một giá trị lớn hơn giá trị ID tối đa hiện tại được chèn một cách rõ ràng,
then new IDs with start from this value + 1Restart [Reset]ALTER TABLE table_name AUTO_INCREMENT = new_start_value;

Để tạo một giá trị ID, bạn có thể bỏ qua cột tăng tự động trong câu lệnh INSERT hoặc chỉ định rõ ràng giá trị NULL hoặc 0

   -- Omit auto-increment column
   INSERT INTO airlines [name] VALUES ['Delta'];
 
   -- Specify NULL or 0
   INSERT INTO airlines VALUES [NULL, 'Southwest'];
   INSERT INTO airlines VALUES [0, 'American Airlines'];

Bạn có thể chèn một giá trị ID một cách rõ ràng, sau đó MySQL sẽ tạo ID mới bắt đầu từ nó thêm 1

   INSERT INTO airlines VALUES [200, 'Lufthansa'];
 
   INSERT INTO airlines [name] VALUES ['British Airways'];   -- id 201 is assigned

Bạn vẫn có thể chèn vào bên trong khoảng trống bằng ID nhỏ hơn ID tối đa hiện tại, nhưng điều này không ảnh hưởng đến ID sẽ được sử dụng cho các hàng khác

   INSERT INTO airlines VALUES [150, 'Air France'];   -- id 150 inserted
 
   INSERT INTO airlines [name] VALUES ['KLM'];   -- id 202 is assigned

Bảng nội dung

idname100United Airlines101Delta102Southwest103American Airlines150Air France200Lufthansa201British Airways202KLM

Hàm LAST_INSERT_ID trả về ID của hàng được chèn thành công đầu tiên. Ví dụ: trong INSERT nhiều hàng

   INSERT IGNORE INTO airlines VALUES 
      [150, 'North Air'],    -- this row will be skipped as ID 150 already exists, and IGNORE option used
      [0, 'Emirates'],        -- id 203 is assigned
      [0, 'Qantas'];          -- id 204
 
   SELECT LAST_INSERT_ID[];
   -- Returns: 203

Bạn không thể đặt lại bộ đếm tăng tự động về giá trị bắt đầu nhỏ hơn hoặc bằng ID tối đa hiện tại

   ALTER TABLE airlines AUTO_INCREMENT = 1;
 
   INSERT INTO airlines [name] VALUES ['US Airways'];   -- id 205 is assigned

Sau khi bạn đã xóa tất cả các hàng, bộ đếm không tự động được đặt lại về giá trị bắt đầu

   DELETE FROM airlines;
 
   INSERT INTO airlines [name] VALUES ['United'];   -- id 206 is assigned

Bạn có thể khởi động lại tự động tăng lên 1 nếu không có hàng nào trong bảng

   DELETE FROM airlines;
 
   ALTER TABLE airlines AUTO_INCREMENT = 1;
 
   INSERT INTO airlines [name] VALUES ['United'];   -- id 1 is assigned

Cột tự động tăng trong cơ sở dữ liệu khác

tiên tri

Tự động tăng hoặc nhận dạng
Có thể được mô phỏng bằng trình tự và trình kích hoạt

Máy chủ SQL

IDENTITY[bắt đầu, gia số]
Có thể chỉ định gia số

PostgreSQL

SERIAL Data TypeStart Value
Always 1ALTER SEQUENCE to changeIncrement
Always 1Generate IDNULL and 0 do not force ID generationLast IDLASTVAL[], CURRVAL['seq_name'] and INSERT RETURNING

Chuyển đổi MySQL AUTO_INCREMENT

tiên tri

Oracle không hỗ trợ thuộc tính AUTO_INCREMENT [IDENTITY] trên một cột, nhưng chức năng này có thể được triển khai bằng trình tự và trình kích hoạt

________số 8

Lưu ý rằng cần có trình kích hoạt vì Oracle không cho phép sử dụng mệnh đề NEXTVAL trong DEFAULT cho một cột

Máy chủ SQL

SQL Server hỗ trợ thuộc tính IDENTITY và cho phép bạn chỉ định số gia tăng

   CREATE TABLE airlines
   [ 
     id INT IDENTITY[100, 1] PRIMARY KEY, 
     name VARCHAR[90]
   ];

PostgreSQL

PostgreSQL hỗ trợ kiểu dữ liệu SERIAL cho phép bạn tự động tạo ID. Mặc dù SERIAL không cung cấp các tùy chọn để đặt giá trị ban đầu và giá trị gia tăng, nhưng bạn có thể sửa đổi đối tượng trình tự bên dưới

Làm cách nào để sử dụng danh tính trong MySQL?

Tương đương với cột IDENTITY của Microsoft SQL Server trong MySQL là AUTO_INCREMENT. IDENTITY trong SQL Server hoạt động như AUTO_INCREMENT trong MySQL. Nếu bạn không chuyển bất kỳ giá trị nào cho cột ProductId, MySQL sẽ bắt đầu auto_increment từ 1 và số tiếp theo tăng thêm 1 theo mặc định

Mã định danh trong bàn làm việc của MySQL là gì?

Một số đối tượng trong MySQL, bao gồm cơ sở dữ liệu, bảng, chỉ mục, cột, bí danh, dạng xem, thủ tục lưu sẵn, phân vùng, vùng bảng, nhóm tài nguyên và các tên đối tượng khác được gọi là định danh.

Làm cách nào để tự động tạo id trong MySQL?

MySQL có từ khóa AUTO_INCREMENT để thực hiện tự động tăng. Giá trị bắt đầu cho AUTO_INCREMENT là 1, là giá trị mặc định. Nó sẽ tăng thêm 1 cho mỗi bản ghi mới. Để lấy id tăng tự động tiếp theo trong MySQL, chúng ta có thể sử dụng hàm last_insert_id[] từ MySQL hoặc auto_increment với SELECT .

Làm cách nào để thêm id tăng tự động trong MySQL?

Để thêm cột số nguyên AUTO_INCREMENT mới có tên c. ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY [c] ; .

Chủ Đề