Thêm AUTO_INCREMENT vào cột hiện có MySQL

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), rất có thể bạn cần làm việc với các 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

  1. giới thiệu. trường tự động tăng và khóa chính
  2. Tạo bảng có ID tăng tự động
  3. Thay đổi giá trị gia tăng
  4. Chèn các giá trị tăng tự động cho các mục mới
  5. Bảo mật DB của bạn bằng UUID
  6. Tóm tắt cú pháp/tham khảo

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 Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0

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 chỉ định khác

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

________số 8

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 AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
7

Một lần nữa—một lần cuối—đả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ị gia tăng và giá trị bắt đầu 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 AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
70 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 AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
70 tùy chỉnh bằng cách 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);
4

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 TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
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
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
70 như vậy

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

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à

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

Nếu bạn chỉ muốn thay đổi giá trị ban đầu của ID (chứ không phải giá trị gia tăng), bạn chỉ 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);
75 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 AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
76 để đặ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

________số 8

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 5 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 AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
78 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 AUTO_INCREMENT PRIMARY KEY,
    item_type varchar(255),
    item_category varchar(255),
    item_name varchar(255);
    
    78 cũ của bạn và sau đó thêm mộ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 sau này

Để 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

Thêm AUTO_INCREMENT vào cột hiện có 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 đang 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 TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
43 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 Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
00

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

CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
43 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

Thêm AUTO_INCREMENT vào cột hiện có 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 TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
47) 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à thông tin mà khách hàng sẽ thấy trên trang web của mỗi sản phẩm, thông tin họ có thể tham khảo khi gặp sự cố và trả lại hàng cũng như thông tin 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 Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
01

Đ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 5 cho mỗi giá trị mới, đồng thời tạo một cột mới—
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
47—với loại dữ liệu
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
53 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ự kết hợ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 TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
47

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

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

Thêm AUTO_INCREMENT vào cột hiện có 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ó ID duy nhất chung-
CREATE TABLE Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
47-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 Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
0

Máy chủ SQL

________số 8

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

PostgreSQL

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

Sau đó chèn chuỗi này vào bảng chính 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);
07

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

________số 8

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 Inventory (
item_number int AUTO_INCREMENT PRIMARY KEY,
item_type varchar(255),
item_category varchar(255),
item_name varchar(255);
01

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ính năng tăng 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

Tôi có thể thêm số gia tự động vào cột hiện có của MySQL không?

Bạn có thể thêm auto_increment vào một cột trong cơ sở dữ liệu MySQL với sự trợ giúp của lệnh ALTER .

Làm cách nào để thêm số gia tự động vào cột trong SQL Server?

ALTER TABLE Hàng tồn kho SỬA ĐỔI CỘT item_number INT AUTO_INCREMENT=50; . Để 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

Bạn có thể CHÈN vào chế độ tăng tự động không?

Bạn có thể chèn vào cột tăng tự động và chỉ định giá trị . Điều này là tốt; . Nếu bạn cố gắng chèn một giá trị NULL hoặc 0 hoặc DEFAULT hoặc nếu bạn bỏ qua cột tăng tự động khỏi các cột trong câu lệnh INSERT của mình, điều này sẽ kích hoạt trình tạo tăng tự động.

Có thể đặt giá trị trường Auto_increment theo cách thủ công không?

Giá trị mặc định là Có. Nếu bạn muốn gán giá trị theo cách thủ công cho trường có thuộc tính AutoIncrement được đặt thành Có, bạn phải là thành viên của bộ quyền cơ sở dữ liệu db_owner của SQL Server .