postgresql設(shè)置id自增的基本方法舉例
創(chuàng)建序列:
CREATE SEQUENCE table_name_id_seq;
將序列與表的列關(guān)聯(lián):
ALTER TABLE table_name ALTER COLUMN id SET DEFAULT nextval('table_name_id_seq');
可選地,你可以設(shè)置序列的起始值、遞增步長和最大值:
-- 將序列的起始值設(shè)置為 1 ALTER SEQUENCE table_name_id_seq START WITH 1; -- 將序列的遞增步長設(shè)置為 1 ALTER SEQUENCE table_name_id_seq INCREMENT BY 1; -- 將序列的最大值設(shè)置為 9999 ALTER SEQUENCE table_name_id_seq MAXVALUE 9999;
完成上述步驟后,每次向表中插入新記錄時,ID 列都會自動遞增??梢允褂靡韵旅畈榭串?dāng)前序列的值:
SELECT nextval('table_name_id_seq');
這就是在 PostgreSQL 中將 ID 進(jìn)行遞增的基本方法。
附:pgsql如何對已有表實(shí)現(xiàn)主鍵id自增和更改字段為布爾類型
一、問題:很多小伙伴在把mysql數(shù)據(jù)庫里面的表導(dǎo)入pgsql數(shù)據(jù)庫的時候,會遇到新增數(shù)據(jù)的時候,id不自增。這是因?yàn)閙ysql數(shù)據(jù)庫可以在工具(比如Navicat上直接設(shè)置主鍵id自增),但是pgsql數(shù)據(jù)庫需要先進(jìn)行主鍵序列化,然后才可以設(shè)置自增。
二、操作流程:
1、(我這里是用的navicat)點(diǎn)擊查詢。1是表格名字,2是id名,3是從數(shù)字幾開始自增,4是保存的序列名(注意:4一定要和1+2相等)。先執(zhí)行第一條sql再執(zhí)行第二條。
sql:create sequence sys_users_jobs_user_id_seq start with 135 increment by 1 no minvalue no maxvalue cache 1;
alter table sys_users_jobs alter column user_id set default nextval('sys_users_jobs_user_id_seq');
2、最后避免自己忘記了,一定要在表格(設(shè)計表下,把默認(rèn)序列寫上,避免自己搞忘記了。)
nextval(‘col_car_id_seq’::regclass)
二、后端實(shí)體類是布爾類型,但是我們把mysql數(shù)據(jù)庫導(dǎo)入pgsql數(shù)據(jù)庫后,表格里面的字段變成l varchar類型或者int4類型。這個時候就需要我們自己操作一下,更改字段類型。
1表示表格名,2表示字段名,3是需要更改成的數(shù)據(jù)類型,4是原來的數(shù)據(jù)類型。如果執(zhí)行報錯,很大原因是目前的數(shù)據(jù)數(shù)據(jù)類型不支持更改成你想要的數(shù)據(jù)類型。這里建議可以先轉(zhuǎn)為varchar類型,然后再轉(zhuǎn)成自己想要得數(shù)據(jù)類型。
sql:
ALTER TABLE "public"."t_wf_action" ALTER COLUMN "is_delete" TYPE bool USING (is_delete::int::bool)
總結(jié)
到此這篇關(guān)于postgresql設(shè)置id自增的基本方法的文章就介紹到這了,更多相關(guān)postgresql設(shè)置id自增內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL連接數(shù)過多報錯:too many clients already的解決
在使用 Navicat 連接 PostgreSQL 數(shù)據(jù)庫時,突然遭遇到了一個報錯:“FATAL: sorry, too many clients already”,這一錯誤提示表明數(shù)據(jù)庫連接數(shù)已經(jīng)達(dá)到上限,無法再創(chuàng)建新連接,所以本文給大家介紹了相關(guān)的解決辦法,需要的朋友可以參考下2024-03-03PostgreSQL實(shí)現(xiàn)按年、月、日、周、時、分、秒的分組統(tǒng)計
這篇文章介紹了PostgreSQL實(shí)現(xiàn)按年、月、日、周、時、分、秒分組統(tǒng)計的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行的問題
某日開發(fā)同事上報一sql性能問題,一條查詢好似一直跑不出結(jié)果,查詢了n小時,還未返回結(jié)果,這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行問題的相關(guān)資料,需要的朋友可以參考下2024-02-02PostgreSQL誤刪數(shù)據(jù)庫該怎么辦詳解
這篇文章主要介紹了PostgreSQL中誤刪數(shù)據(jù)庫的恢復(fù)方法,包括備份恢復(fù)、歸檔日志恢復(fù)和操作系統(tǒng)層面的快照恢復(fù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03