插件窝 干货文章 SQL 如何添加自增列

SQL 如何添加自增列

TABLE datatype 添加 PRIMARY 778    来源:    2025-03-29

SQL 添加自增列的方法

在SQL中,自增列(也称为标识列或自动编号列)是一种特殊的列,它会自动为每条新记录分配一个唯一的递增值。以下是不同数据库系统中添加自增列的方法:

MySQL/MariaDB

-- 创建表时添加自增列
CREATE TABLE table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

-- 修改现有表添加自增列
ALTER TABLE table_name ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY FIRST;

SQL Server

-- 创建表时添加自增列
CREATE TABLE table_name (
    id INT IDENTITY(1,1) PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

-- 修改现有表添加自增列(需要先删除表重建或使用临时表)
-- 没有直接ALTER TABLE添加IDENTITY列的方法

PostgreSQL

-- 创建表时添加自增列(使用SERIAL类型)
CREATE TABLE table_name (
    id SERIAL PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

-- 或者使用IDENTITY(PostgreSQL 10+)
CREATE TABLE table_name (
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

-- 修改现有表添加自增列
ALTER TABLE table_name ADD COLUMN id SERIAL PRIMARY KEY;

Oracle

-- 创建表时添加自增列(需要序列和触发器)
-- 先创建序列
CREATE SEQUENCE table_name_seq;

-- 创建表
CREATE TABLE table_name (
    id NUMBER DEFAULT table_name_seq.NEXTVAL PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

-- 或者使用12c+的IDENTITY列
CREATE TABLE table_name (
    id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);

SQLite

-- 创建表时添加自增列
CREATE TABLE table_name (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    column1 datatype,
    column2 datatype,
    ...
);

-- SQLite不支持直接修改表添加自增列

注意事项

  1. 自增列通常用作主键
  2. 不同数据库系统的语法有所不同
  3. 在某些数据库中(如SQL Server),不能直接通过ALTER TABLE添加自增列
  4. 自增列的值通常由数据库自动管理,不应手动指定(除非明确设置了允许)

需要根据您使用的具体数据库系统选择适当的方法。