You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle与MySQL表中新增序列列作为主键

解决方案

以下操作均假设你要修改的实际表名为your_table,执行前请替换为你的业务表名,且提前做好数据备份。

MySQL 环境

直接新增自增主键列即可,语句执行后会自动为现有所有行分配从1开始的连续唯一值,后续新插入数据也会自动生成序列值:

ALTER TABLE your_table 
ADD COLUMN SQ INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

如果不需要将SQ列放在表的第一列,去掉语句末尾的FIRST关键字即可。

Oracle 环境

12c 及以上版本(推荐)

可直接新增自增标识主键列,一条语句完成新增、填充现有数据、配置新数据自动生成逻辑:

ALTER TABLE your_table 
ADD SQ NUMBER(10) GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

11g 及更低版本

需要配合序列实现:

  1. 先创建序列对象
CREATE SEQUENCE sq_seq 
START WITH 1 
INCREMENT BY 1 
NOCACHE NOCYCLE;
  1. 新增SQ主键列
ALTER TABLE your_table ADD SQ NUMBER(10) PRIMARY KEY;
  1. 为现有所有行填充序列值
UPDATE your_table SET SQ = sq_seq.NEXTVAL;
COMMIT;
  1. 如需新插入数据自动生成序列值,可创建触发器(可选):
CREATE OR REPLACE TRIGGER trg_your_table_sq
BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
  :NEW.SQ := sq_seq.NEXTVAL;
END;
/

注意事项

  • 若表数据量较大,Oracle环境的UPDATE操作会占用较多系统资源,建议在业务低峰期执行
  • 如果对序列起始值、步长有自定义需求,可对应修改序列创建参数、自增列配置

内容的提问来源于stack exchange,提问作者WooseokChoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:03