LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

sqlserver表轉pgsql時有自增的列不會轉過來(PostgreSQL 實現ID自增的幾種方法)

maoxiaoming
2025年8月13日 10:30 本文熱度 375

一、為現有表添加自增功能

方法1:使用SERIAL/BIGSERIAL(簡單方案)

sql
-- 修改現有列
ALTER TABLE public.mis_action_log; ALTER COLUMN id SET DATA TYPE BIGSERIAL;

方法2:使用IDENTITY(PostgreSQL 10+標準方案)

sql
-- 修改現有列
ALTER TABLE public.mis_action_log; ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY;

方法3:手動創建序列(靈活方案)

sql
-- 1. 創建序列
CREATE SEQUENCE public.mis_action_log_id_seq;

-- 2. 關聯序列到列
ALTER TABLE public.mis_action_log; ALTER COLUMN id SET DEFAULT nextval('public.mis_action_log_id_seq');

-- 3. 設置序列歸屬
ALTER SEQUENCE public.mis_action_log_id_seq OWNED BY public.mis_action_log.id;

二、設置自增ID從特定值開始

1. 查看當前最大ID值

sql
SELECT MAX(id) FROM public.mis_action_log;

2. 設置序列起始值

對于SERIAL/BIGSERIAL序列:

sql
ALTER SEQUENCE mis_action_log_id_seq RESTART WITH [最大ID值+1];

對于IDENTITY列:

sql
ALTER TABLE public.mis_action_log;
ALTER COLUMN id RESTART WITH [最大ID值+1];

3. 自動化腳本(一步完成)

sql
DO $$DECLARE
    max_id bigint;BEGIN
    SELECT COALESCE(MAX(id), 0) INTO max_id FROM public.mis_action_log;
    EXECUTE format('ALTER SEQUENCE mis_action_log_id_seq RESTART WITH %s', max_id + 1);END $$;

4. 使用UUID作為自增替代方案(比較麻煩,一般不用)

sql
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    name VARCHAR(100)
);

?比較各種方法

方法版本要求標準符合性特點
SERIAL所有版本PostgreSQL特有簡單易用
IDENTITY10+SQL標準推薦新項目使用
手動序列所有版本-最靈活
UUID需安裝擴展-全局唯一

三、驗證自增設置

sql
-- 查看序列當前值
SELECT last_value FROM mis_action_log_id_seq;

-- 測試插入(不指定ID)
INSERT INTO public.mis_action_log(source_sort) VALUES('test') RETURNING id;

-- 檢查序列下一個值
SELECT nextval('mis_action_log_id_seq');

四、完整工作流程示例

sql
-- 1. 添加自增功能(選擇一種方法)
ALTER TABLE public.mis_action_log; ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY;

-- 2. 設置從最大ID+1開始
DO $$DECLARE max_id bigint;BEGIN SELECT COALESCE(MAX(id), 0) INTO max_id FROM public.mis_action_log; EXECUTE format('ALTER TABLE public.mis_action_log ALTER COLUMN id RESTART WITH %s', max_id + 1);END $$;

-- 3. 驗證
INSERT INTO public.mis_action_log(source_sort) VALUES('驗證插入') RETURNING id;

注意事項

  1. 權限:需要表所有者或超級用戶權限

  2. 事務:生產環境建議在事務中執行

  3. 并發:高并發環境考慮使用UUID替代自增ID

  4. 備份:修改前建議備份數據

通過以上步驟,可以為現有表添加自增ID功能,并確保新ID從已有數據的最大ID后開始遞增。


該文章在 2025/8/14 9:14:14 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩欧美一区二区久久婷婷 | 亚洲国产综合精品2020 | 亚洲国产永久免费播放片 | 亚洲欧洲日韩在线不卡 | 亚洲a视频在线观看 | 中文字幕在线手机一区 |