Cập nhật id tự động tăng mysql

Có dự định không, thậm chí INSERT. ON DUPLICATE KEY UPDATE tăng AUTO_INCREMENT. Và ON DUPLICATE KEY không cung cấp khóa được thực hiện mặc dù LAST_INSERT_ID?

Đã thử nghiệm với MariaDB 10. 5. 10

last_insert_id chỉ trả về giá trị được chèn cuối cùng được dự định. Nhấn "BẬT CẬP NHẬT KHÓA DUPLICATE" không được tính là một lần chèn, vì vậy trả về giá trị được sử dụng trong lần chèn thành công cuối cùng

trong những trường hợp như thế này có thể chứa các giá trị bị thiếu. Một phần của kiến ​​trúc giúp phân bổ giá trị auto_increment dễ dàng hơn trước khi phát hiện ra sự trùng lặp xảy ra

Bình luận

Nội dung được sao chép trên trang web này là tài sản của chủ sở hữu tương ứng và nội dung này không được MariaDB xem xét trước. Quan điểm, thông tin và ý kiến ​​được thể hiện bởi nội dung này không nhất thiết đại diện cho quan điểm của MariaDB hoặc bất kỳ bên nào khác

auto_increment là thuộc tính mặc định tự động tăng bản ghi mới thêm 1. Số bắt đầu có thể được thay đổi với sự trợ giúp của lệnh thay đổi

Đầu tiên, một bảng được tạo với sự trợ giúp của lệnh chèn. Điều này được đưa ra như sau -

mysql> CREATE table AutoIncrementTable
-> (
-> id int auto_increment,
-> name varchar(200),
-> Primary key(id)
-> );
Query OK, 0 rows affected (0.70 sec)

Sau khi tạo bảng, các bản ghi được chèn vào bảng với sự trợ giúp của lệnh chèn Điều này được đưa ra như sau -

mysql> INSERT into AutoIncrementTable(name) values('Carol');
Query OK, 1 row affected (0.19 sec)

mysql> INSERT into AutoIncrementTable(name) values('Bob');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into AutoIncrementTable(name) values('John');
Query OK, 1 row affected (0.18 sec)

Bây giờ, các bản ghi trong bảng có thể được nhìn thấy với sự trợ giúp của lệnh select. Điều này được đưa ra như sau -

mysql> SELECT * from AutoIncrementTable;

Đầu ra thu được từ truy vấn trên được đưa ra dưới đây -

+----+-------+
| id | name  |
+----+-------+
| 1  | Carol |
| 2  | Bob   |
| 3  | John  |
+----+-------+
3 rows in set (0.00 sec)

Bây giờ, ba bản ghi đã được chèn vào bảng và id được tăng thêm 1 mỗi lần. Bây giờ, phần Tăng tự động đã được thay đổi để id của bản ghi tiếp theo bắt đầu từ 1000

Cú pháp thay đổi auto_increment như sau

alter table yourTableName auto_increment=startingNumber;

Cú pháp trên được sử dụng để thay đổi auto_increment bằng 1000. Điều này được hiển thị dưới đây -

mysql> alter table AutoIncrementTable auto_increment = 1000;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

Sau khi thay đổi thành công số gia tự động, nhiều bản ghi hơn sẽ được chèn vào bảng. Điều này được hiển thị dưới đây -

mysql> INSERT into AutoIncrementTable(name) values('Taylor');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into AutoIncrementTable(name) values('Sam');
Query OK, 1 row affected (0.17 sec)

Bây giờ, các bản ghi bảng được xem bằng cách sử dụng câu lệnh chọn. Có thể thấy số ghi thứ 4 bắt đầu từ 1000

Nếu bạn đang xử lý dữ liệu sản phẩm (đơn đặt hàng, tài nguyên, SKU, ứng dụng), thì rất có thể bạn cần làm việc với ID tăng tự động, thường là khóa chính hoặc một phần của khóa tổng hợp. Làm cho những thứ này hoạt động có thể khá khó chịu, đặc biệt là khi bạn xem xét rằng các phương ngữ SQL chính – Postgres, MySQL và MSSQL – tất cả đều xử lý cú pháp rất khác nhau

Hướng dẫn này sẽ hướng dẫn cách triển khai và làm việc với các trường tăng tự động trong SQL, chạy qua cú pháp cho các phương ngữ SQL khác nhau và giải thích cách xử lý các UUID an toàn hơn

nội dung

giới thiệu. trường tự động tăng và khóa chính

Hãy tưởng tượng bạn đang làm việc với dữ liệu sản phẩm cho kho hàng của một nhà sản xuất và phân phối tấm pin mặt trời mới. Bạn cần tạo một

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 duy nhất cho mỗi đơn đặt hàng từ hôm nay trở đi (nghĩ. hàng nghìn đơn đặt hàng). Số vật phẩm không thể trùng lặp để phân biệt giữa từng vật phẩm trong kho của bạn. Nếu bạn đang tạo các khóa chính này dưới dạng tổng hợp các giá trị cột trong bảng, công việc của bạn có thể chậm và cồng kềnh. Bạn không cần phải chịu đựng. Có một cách tốt hơn

Khi bạn sử dụng các trường tăng tự động để gán giá trị số nguyên trong cơ sở dữ liệu của mình, bạn sẽ cải thiện tính ổn định của cơ sở dữ liệu, hạn chế lỗi do thay đổi giá trị, cải thiện hiệu suất và tính đồng nhất, tăng khả năng tương thích và hợp lý hóa quá trình xác thực. Sau đó, bạn có thể sử dụng tính năng tăng tự động trong các truy vấn SQL để tự động gán các giá trị trong cột khóa chính

Nói ngắn gọn. bạn làm cho cuộc sống của mình—và việc quản lý cơ sở dữ liệu—dễ dàng hơn. Trong ví dụ xuyên suốt bài viết này, bảng của bạn sẽ cần bao gồm các trường sau

  • CREATE TABLE Inventory (
    item_number int AUTO_INCREMENT PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    4. được tạo bằng cách sử dụng tăng tự động
  • CREATE TABLE Inventory (
    item_number int AUTO_INCREMENT PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    6. được nhập thủ công dưới dạng chuỗi biến
  • CREATE TABLE Inventory (
    item_number int AUTO_INCREMENT PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    7. cũng được nhập thủ công dưới dạng một chuỗi biến
  • CREATE TABLE Inventory (
    item_number int AUTO_INCREMENT PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    8. cũng được nhập thủ công dưới dạng một chuỗi biến

Các giá trị này sẽ được sử dụng để tham chiếu các sản phẩm trong cơ sở dữ liệu nội bộ sẽ cần được lấy khi khách hàng đặt hàng

Trước khi chuyển sang phần cú pháp và ví dụ của chúng tôi, chúng tôi muốn dành một phút để nói về lý do tại sao bạn nên sử dụng tính năng tăng tự động trong cơ sở dữ liệu của mình (đặc biệt là đối với các khóa chính). (Nếu bạn chỉ muốn đi vào vấn đề, hãy nhấp vào đây để chuyển xuống phần tóm tắt cú pháp. )

Sử dụng ID tăng dần tự động trong SQL mang lại rất nhiều lợi ích, chủ yếu trong số đó là tiết kiệm một chút sự tỉnh táo của bạn. Nhưng nó cũng giúp bạn

  • Truy xuất dữ liệu nhanh hơn và dễ dàng hơn vì mỗi khóa chính là một số nguyên tuần tự, đơn giản chứ không phải là sự kết hợp phức tạp của các giá trị chuỗi khác
  • Tránh vi phạm mã nếu các giá trị khác trong bảng của bạn thay đổi, điều này sẽ xảy ra nếu khóa chính của bạn là tổ hợp của các giá trị cột khác
  • Đảm bảo tính duy nhất của từng khóa trong bảng của bạn mà không bị khóa hoặc điều kiện chạy đua vì ID được tăng tự động sẽ tự động tránh lặp lại và trùng lặp
  • Cải thiện hiệu suất hệ thống vì chúng là loại dữ liệu nhỏ gọn, cho phép các đường dẫn mã được tối ưu hóa cao để tránh bỏ qua giữa các cột để tạo khóa

Ngoài ra, các khóa chính có thể được sử dụng trên nhiều hệ thống và trình điều khiển để hỗ trợ ánh xạ đối tượng theo hàng và các hoạt động không liên quan đến hệ thống cơ sở dữ liệu

Đã nói tất cả những điều đó, việc sử dụng khóa chính được tăng tự động không phù hợp với mọi trường hợp sử dụng. Đọc về điều này trước khi thực sự nhảy vào

Tạo bảng có ID tăng tự động trong truy vấn SQL

Nếu bạn đang bắt đầu từ đầu, bạn sẽ cần tạo một bảng trong cơ sở dữ liệu của mình được thiết lập để tự động tăng các khóa chính của nó

➞ PostgreSQL

Khi tạo khóa chính tăng tự động trong Postgres, bạn sẽ cần sử dụng

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
9 để tạo ID duy nhất tuần tự. Bắt đầu và gia số mặc định được đặt thành 1

Cú pháp cơ bản là

CREATE TABLE TableName (
Column1 DataType SERIAL PRIMARY KEY,
Column2 DataType,
);

Khi được áp dụng cho tập dữ liệu khoảng không quảng cáo mẫu của chúng tôi, việc tạo bảng trông giống như

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);

Bước đầu tiên này khá đơn giản. Chỉ cần đảm bảo đánh dấu cột số mặt hàng của bạn là

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
0

➞ MySQL

Tự động gia tăng trong MySQL khá giống với SQL Server, ngoại trừ việc bạn không bao gồm giá trị bắt đầu và giá trị số nguyên theo cách thủ công. Thay vào đó, bạn sử dụng từ khóa

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
1, có giá trị bắt đầu và gia tăng mặc định là 1

Cú pháp cơ bản để tạo bảng này trong MySQL là

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);

Trong ví dụ của chúng tôi, đây là bảng chúng tôi muốn tạo

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);

Giống như Postgres, bạn cần đảm bảo rằng bạn đang sử dụng từ khóa

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
0 cho cột mà bạn muốn tạo ID duy nhất của mình từ đó

➞ Máy chủ SQL

Trong SQL Server, bạn sẽ sử dụng từ khóa

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
3 để đặt khóa chính của mình (hoặc
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 trong trường hợp sử dụng của chúng tôi). Theo mặc định, giá trị bắt đầu của
CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
3 là 1 và giá trị này sẽ tăng thêm 1 với mỗi mục nhập mới trừ khi bạn có thông báo khác

Để bắt đầu, hãy tạo một bảng. Cú pháp cơ bản

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);

Khi được áp dụng cho trường hợp kiểm tra hàng tồn kho của chúng tôi, việc tạo bảng sẽ giống như

CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);

Một lần nữa—một lần cuối cùng—đảm bảo bao gồm

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
0 bên cạnh từ khóa
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
9, để bạn không chỉ tạo ra một danh sách các số tuần tự vô dụng

Bây giờ, khi bạn đã tạo khung cho bảng của mình, bạn sẽ cần quyết định xem giá trị bắt đầu và giá trị gia tăng mặc định có phù hợp với trường hợp sử dụng của mình không


Đăng ký nhận bản tin Retool hàng tháng
Mỗi tháng một lần, chúng tôi gửi những câu chuyện hàng đầu (như câu chuyện này) cùng với các hướng dẫn, mẫu và bản phát hành sản phẩm của Retool


Thay đổi số gia được sử dụng bởi số gia tự động trong truy vấn SQL

Trừ khi bạn đang xây dựng một ứng dụng mới từ đầu, rất có thể bạn sẽ nhập hoặc làm việc trong một tập dữ liệu hiện có. Điều này có nghĩa là bạn sẽ cần điều chỉnh điểm bắt đầu của phần tăng tự động để tính đến các giá trị hiện có (và có thể là phần tăng giữa các giá trị tùy thuộc vào quy ước đặt tên)

Làm việc trong ví dụ về tập dữ liệu hàng tồn kho của chúng tôi, giả sử bạn đang di chuyển và cập nhật các bản ghi từ bản phát hành sản phẩm đầu tiên của mình sang một bảng mới trước khi thêm các sản phẩm mới và sản phẩm cải tiến. Để đơn giản, giả sử công ty của bạn tình cờ phát hành 49 mặt hàng khác nhau trong vòng đầu tiên, điều đó có nghĩa là bạn sẽ cần bắt đầu các giá trị mới của mình ở mức 50

Ngoài ra, vì bất kỳ lý do gì (không ai ghi lại điều đó), những người tiền nhiệm của bạn đã tạo ra

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
8 trong quá khứ với gia số năm, vì vậy bạn sẽ muốn giữ đúng ngôn ngữ bản địa và tăng thêm năm với mỗi sản phẩm mới được thêm vào. Rất may, thay đổi này rất dễ thực hiện trong (gần như) mọi DBMS

➞ PostgreSQL

Postgres là loại kỳ lạ ở đây. thay đổi giá trị bắt đầu và giá trị gia tăng tự động tăng trong Postgres liên quan đến từ khóa

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
9 và yêu cầu bạn tạo một
CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0 tùy chỉnh dưới dạng một bảng một hàng riêng biệt mà sau đó bạn sẽ chèn vào bảng nhân viên của mình

Đầu tiên, tạo một

CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0 tùy chỉnh bằng cách sử dụng

CREATE SEQUENCE sequencename
start 2
increment 2;

Ghi chú. đảm bảo rằng tên dãy này là khác biệt (i. e. không chia sẻ tên của bất kỳ bảng, trình tự, chỉ mục, dạng xem hoặc bảng nước ngoài nào khác trong lược đồ hiện tại của bạn) để tránh xung đột

Trong ví dụ của chúng tôi, chúng tôi muốn item_number bắt đầu từ 50 và tăng thêm 5 với mỗi giá trị mới. Mã cho điều đó sẽ giống như

CREATE SEQUENCE item_number_pk
start 50
increment 5;

Sau đó, bạn chèn bản ghi này vào bảng kiểm kê mà chúng ta đã tạo trước đó và đặt giá trị

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 cho mặt hàng mới này là
CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0 như vậy

INSERT INTO Inventory
(item_number, item_type, item_category, item_name)
VALUES
(nextval('item_number_pk'), 'Item Type', 'Item Category', 'Item Name');

Mỗi lần bạn thêm một giá trị vào bảng của mình (xem bên dưới), bạn sẽ cần gọi ra rằng giá trị

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 là

nextval('sequencename')

Nếu bạn chỉ muốn thay đổi giá trị bắt đầu của ID của mình (chứ không phải giá trị gia tăng), bạn chỉ cần sử dụng

CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
5 và tiết kiệm cho mình một số công việc cần làm. Cú pháp cơ bản cho điều này trông giống như

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0

Ví dụ của chúng tôi, điều này trông giống như

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
1

➞ MySQL

Nếu bạn đang sử dụng MySQL, bạn có thể chạy

CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
6 để đặt các giá trị bắt đầu tăng tự động mới. Thật không may, MySQL không hỗ trợ thay đổi giá trị gia tăng mặc định, vì vậy bạn bị kẹt ở đó

Cú pháp cơ bản cho điều này trông giống như

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
2

Sử dụng ví dụ về bảng khoảng không quảng cáo của chúng tôi, điều chỉnh của bạn đối với giá trị bắt đầu tăng tự động sẽ là

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
3

Sau khi chạy mã này, các ID mặt hàng trong tương lai sẽ bắt đầu ở số_mặt_hàng là 50 và tăng thêm 1

➞ Máy chủ SQL

Để thay đổi giá trị gia tăng bắt đầu và gia số trong SQL Server, hãy đặt các giá trị không mặc định của bạn trong quá trình tạo bảng. Nhìn lại cú pháp cơ sở của chúng tôi từ phần trước

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);

Trong ví dụ của chúng tôi, nơi chúng tôi muốn

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 bắt đầu từ 50 và tăng thêm năm với mỗi giá trị mới, mã sẽ như sau

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
5

Nếu bạn đang tìm cách thêm số gia tự động vào một bảng hiện có bằng cách thay đổi cột

CREATE TABLE Inventory (
item_number int IDENTITY(1,1) PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
8 hiện có thành
CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
3, SQL Server sẽ chống lại bạn. Bạn sẽ phải

  • Thêm một cột mới cùng với khóa chính mới được tăng tự động của bạn hoặc
  • Bỏ cột
    CREATE TABLE Inventory (
    item_number int IDENTITY(1,1) PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    8 cũ của bạn và sau đó thêm một cột
    CREATE TABLE TableName (
    Column1 DataType IDENTITY(starting value, increment by),
    Column2 DataType,
    );
    
    3 mới ngay sau đó

Trong trường hợp thứ hai, bạn sẽ muốn đảm bảo rằng

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);
3 mới của mình bắt đầu ở +1 giá trị của id cuối cùng trong cột đã bỏ qua của bạn để tránh trùng lặp các khóa chính trong tương lai

Để làm điều này, bạn sẽ sử dụng đoạn mã sau

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
6

Với ví dụ của chúng tôi, điều này sẽ giống như

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
7

Tuy nhiên, bất kể cuối cùng bạn sử dụng DBMS nào, nếu bạn đang làm theo kịch bản ví dụ của chúng tôi, kết quả đầu ra của bạn sẽ giống với bảng sau (mặc dù MySQL không hỗ trợ mức tăng không mặc định là 5). Chúng ta sẽ thêm các giá trị được thấy bên dưới trong phần tiếp theo

Cập nhật id tự động tăng mysql


Xây dựng các công cụ nội bộ trên Postgres, MySQL, SQL Server và hàng chục nguồn dữ liệu khác với Retool. Lắp ráp ứng dụng của bạn trong 30 giây bằng cách kéo và thả từ hơn 50 thành phần dựng sẵn. Kết nối với hàng tá tích hợp dữ liệu và mọi thứ với API REST hoặc GraphQL. Bắt đầu miễn phí👉

Thêm giá trị với tự động tăng

Tin vui là cú pháp để thêm giá trị bằng cách tăng tự động là giống nhau đối với 2/3 DB mà chúng ta đang thảo luận ở đây. Đúng như dự đoán, Postgres là một con vịt kỳ lạ vì nó khiến bạn đề cập đến chuỗi tùy chỉnh của mình làm giá trị cho khóa chính với mỗi mục nhập mới nếu bạn tăng hơn 1

Nhưng đối với hai người kia, nó khá đơn giản. Phần hay của tự động tăng trong SQL Server và MySQL là bạn có thể đặt điểm bắt đầu khóa chính của mình và quên nó đi. Không cần phải tham khảo lại và thêm giá trị đó theo cách thủ công khi chèn thông tin cho các cột khác

Để

CREATE SEQUENCE sequencename
start 2
increment 2;
3 vào bảng tăng tự động của bạn, hãy sử dụng

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
8

Ví dụ của chúng tôi, giả sử bạn đang thêm Bảng điều khiển năng lượng mặt trời đơn tinh thể linh hoạt 175 watt 12 Volt mới (nhân tiện, rất hay) vào hệ thống

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
9

Sau đó vài ngày, sau khi một lô hàng lớn đến, bạn cần thêm năm sản phẩm nữa cùng một lúc. Bạn có thể cắt ngắn mọi thứ bằng cách làm như sau

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);
0

Lưu ý rằng, trong các ví dụ trên, bạn không cần phải đề cập hoặc

CREATE SEQUENCE sequencename
start 2
increment 2;
3 giá trị cho item_number. Đó là bởi vì tự động gia tăng khu phố thân thiện của chúng tôi đang làm điều đó cho chúng tôi

Đầu ra của những bản ghi mới này vào bảng dữ liệu hàng tồn kho của bạn sẽ như thế này

Cập nhật id tự động tăng mysql

Tạo UUID bên ngoài cho các ứng dụng an toàn hơn

Các khóa chính tăng tự động là tuyệt vời nhưng không phải lúc nào cũng là giải pháp phù hợp. Để lộ khóa chính của bạn ra bên ngoài – cho dù trong một URL khi tham chiếu hồ sơ nhân viên hoặc giữa cơ sở dữ liệu của bạn với những người khác – có thể mở hệ thống của bạn trước botnet và các lỗ hổng khác

Bạn có thể tạo các DB an toàn hơn (và cải thiện tốc độ thu hồi) bằng cách sử dụng tính năng tăng tự động để tạo các khóa chính chỉ dành cho mục đích sử dụng nội bộ, riêng tư và sau đó tạo một UUID riêng cho mục đích sử dụng chung bằng cách kết hợp khóa chính của bạn với giá trị thứ hai trong bảng của bạn, . Làm điều này cho phép bạn giữ tất cả các lợi ích của việc tự động tăng cả khóa chính và ID công khai trong khi làm xáo trộn các khóa chính của bạn

Đối với nhà sản xuất và đại lý bán lại bảng điều khiển năng lượng mặt trời ví dụ của chúng tôi, khóa chính của chúng tôi là id duy nhất tăng tự động của chúng tôi

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 và UUID công khai của chúng tôi (
CREATE SEQUENCE sequencename
start 2
increment 2;
7) là sự kết hợp của
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 đó và
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
6 của chúng tôi. UUID hiển thị công khai này là những gì khách hàng sẽ thấy trên trang web của mỗi sản phẩm, những gì họ có thể tham khảo khi gặp sự cố và trả lại cũng như những gì sẽ xuất hiện trên hóa đơn đặt hàng của họ, trong khi khóa chính của chúng tôi (
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4) bị ẩn và chỉ dành riêng cho việc sử dụng cơ sở dữ liệu nội bộ

Để làm điều này, mã của bạn—sử dụng ví dụ của chúng tôi và làm việc với SQL Server dưới dạng DBMS của bạn—sẽ trông như thế này

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);
1

Điều này sẽ tự động tạo một

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 duy nhất bắt đầu từ 50 và tăng thêm năm cho mỗi giá trị mới, đồng thời tạo một cột mới—
CREATE SEQUENCE sequencename
start 2
increment 2;
7—với loại dữ liệu
CREATE SEQUENCE item_number_pk
start 50
increment 5;
3 sẽ đóng vai trò là một nửa UUID của chúng tôi

Sau đó, bạn sẽ thêm thông tin sản phẩm của mình—như chúng tôi đã làm trong các phần trước—với sự nối tiếp của các trường

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4 và
CREATE SEQUENCE sequencename
start 2
increment 2;
7

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);
2

Mã này sẽ dẫn đến đầu ra sau, giờ đây có thêm một cột cho ID mặt hàng công khai của bạn

Cập nhật id tự động tăng mysql

Khi bạn đã tạo các trường ở trên, giờ đây bạn có thể tham chiếu nội bộ thông tin sản phẩm của mình giữa các ứng dụng và cơ sở dữ liệu bằng cách sử dụng khóa chính

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
4, cũng như có một ID duy nhất trên toàn cầu-
CREATE SEQUENCE sequencename
start 2
increment 2;
7-có thể được tham chiếu bởi khách hàng, kế toán,

Tóm tắt cú pháp. ID tăng tự động trong các truy vấn SQL

Nếu bạn ở đây chỉ để CTRL+F theo cách của bạn để tìm ra giải pháp (không phán xét), thì bạn đã đến đúng phần. Dưới đây là bảng phân tích nhanh và bẩn về cú pháp cho từng khái niệm được thảo luận ở trên

Tạo bảng có ID tăng tự động trong truy vấn SQL

PostgreSQL

CREATE TABLE TableName (
Column1 DataType SERIAL PRIMARY KEY,
Column2 DataType,
);

mysql

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);

Máy chủ SQL

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);

Thay đổi số gia được sử dụng bởi số gia tự động trong truy vấn SQL

PostgreSQL

CREATE SEQUENCE sequencename
start 2
increment 2;

Sau đó chèn chuỗi này vào bảng chính của bạn

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);
7

Hoặc, nếu bạn chỉ muốn thay đổi giá trị ban đầu của ID

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0

mysql

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
2

Máy chủ SQL

CREATE TABLE TableName (
Column1 DataType IDENTITY(starting value, increment by),
Column2 DataType,
);

Thêm giá trị bằng cách tăng tự động (Postgres, MySQL, SQL Server)

CREATE TABLE Inventory (
item_number int SERIAL PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
8

Sử dụng tăng tự động trong các truy vấn SQL bên trong và bên ngoài (SQL Server)

CREATE TABLE TableName (
COLUMN1 DataType AUTO_INCREMENT,
COLUMN2 DataType,
);
1

Sau đó chèn các giá trị của bạn và cập nhật các ID bên ngoài, công khai của bạn thành các giá trị được nối của bạn

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
3

Làm cho cuộc sống của bạn dễ dàng hơn, sử dụng tự động gia tăng trong các truy vấn SQL

Sử dụng tăng tự động thường là cách tốt hơn để tạo và quản lý các giá trị trong cơ sở dữ liệu của bạn, bất kể bạn sử dụng DBMS nào. Làm như vậy hợp lý hóa việc tạo ID chính, cải thiện quản lý cơ sở dữ liệu bằng cách giảm thời gian truy xuất và tạo sự nhất quán giữa các cơ sở dữ liệu

Nếu bạn đang tìm kiếm thêm trợ giúp về cú pháp SQL trong các phương ngữ, hãy xem hướng dẫn của chúng tôi về định dạng và xử lý ngày tháng trong SQL

Làm cách nào để cập nhật id tăng tự động trong MySQL?

Trong MySQL, bộ đếm tăng tự động bắt đầu từ 0 theo mặc định, nhưng nếu bạn muốn tăng tự động bắt đầu từ một số khác, hãy sử dụng cú pháp bên dưới. ALTER TABLE yourTable auto_increment=yourIntegerNumber; Để hiểu cú pháp trên, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau.

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 để 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ự động tăng số id bằng các chữ cái và số trong MySQL?

6 câu trả lời .
lấy ID cuối cùng [KP-0001]
xóa một số ký tự và đặt nó vào một biến [KP-]
chuyển đổi phần còn lại thành số vì nó là một chuỗi [0001]
tăng thêm 1 [1 + 1 = 2]
chuyển đổi nó trở lại chuỗi và đệm số 0 ở bên phải [0002]
nối biến và số mới tăng [KP-0002]
lưu nó