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è)置序列的起始值、遞增步長(zhǎng)和最大值:
-- 將序列的起始值設(shè)置為 1 ALTER SEQUENCE table_name_id_seq START WITH 1; -- 將序列的遞增步長(zhǎng)設(shè)置為 1 ALTER SEQUENCE table_name_id_seq INCREMENT BY 1; -- 將序列的最大值設(shè)置為 9999 ALTER SEQUENCE table_name_id_seq MAXVALUE 9999;
完成上述步驟后,每次向表中插入新記錄時(shí),ID 列都會(huì)自動(dòng)遞增??梢允褂靡韵旅畈榭串?dāng)前序列的值:
SELECT nextval('table_name_id_seq');
這就是在 PostgreSQL 中將 ID 進(jìn)行遞增的基本方法。
附:pgsql如何對(duì)已有表實(shí)現(xiàn)主鍵id自增和更改字段為布爾類型
一、問(wèn)題:很多小伙伴在把mysql數(shù)據(jù)庫(kù)里面的表導(dǎo)入pgsql數(shù)據(jù)庫(kù)的時(shí)候,會(huì)遇到新增數(shù)據(jù)的時(shí)候,id不自增。這是因?yàn)閙ysql數(shù)據(jù)庫(kù)可以在工具(比如Navicat上直接設(shè)置主鍵id自增),但是pgsql數(shù)據(jù)庫(kù)需要先進(jìn)行主鍵序列化,然后才可以設(shè)置自增。
二、操作流程:
1、(我這里是用的navicat)點(diǎn)擊查詢。1是表格名字,2是id名,3是從數(shù)字幾開(kāi)始自增,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è)計(jì)表下,把默認(rèn)序列寫(xiě)上,避免自己搞忘記了。)
nextval(‘col_car_id_seq’::regclass)
二、后端實(shí)體類是布爾類型,但是我們把mysql數(shù)據(jù)庫(kù)導(dǎo)入pgsql數(shù)據(jù)庫(kù)后,表格里面的字段變成l varchar類型或者int4類型。這個(gè)時(shí)候就需要我們自己操作一下,更改字段類型。
1表示表格名,2表示字段名,3是需要更改成的數(shù)據(jù)類型,4是原來(lái)的數(shù)據(jù)類型。如果執(zhí)行報(bào)錯(cuò),很大原因是目前的數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL 如何修改文本類型字段的存儲(chǔ)方式
這篇文章主要介紹了PostgreSQL 如何修改文本類型字段的存儲(chǔ)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12PostgreSQL自動(dòng)更新時(shí)間戳實(shí)例代碼
最近有這么一個(gè)工程,需要使用postgresql數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中的好幾個(gè)表中都需要時(shí)間戳這個(gè)字段,這篇文章主要給大家介紹了關(guān)于PostgreSQL自動(dòng)更新時(shí)間戳的相關(guān)資料,需要的朋友可以參考下2021-11-11PostgreSQL連接數(shù)過(guò)多報(bào)錯(cuò):too many clients already的解決
在使用 Navicat 連接 PostgreSQL 數(shù)據(jù)庫(kù)時(shí),突然遭遇到了一個(gè)報(bào)錯(cuò):“FATAL: sorry, too many clients already”,這一錯(cuò)誤提示表明數(shù)據(jù)庫(kù)連接數(shù)已經(jīng)達(dá)到上限,無(wú)法再創(chuàng)建新連接,所以本文給大家介紹了相關(guān)的解決辦法,需要的朋友可以參考下2024-03-03如何為PostgreSQL的表自動(dòng)添加分區(qū)
這篇文章主要介紹了如何為PostgreSQL的表自動(dòng)添加分區(qū),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒的分組統(tǒng)計(jì)
這篇文章介紹了PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒分組統(tǒng)計(jì)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06PostgreSQL 中的單引號(hào)與雙引號(hào)用法說(shuō)明
這篇文章主要介紹了PostgreSQL 中的單引號(hào)與雙引號(hào)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02如何解決PostgreSQL執(zhí)行語(yǔ)句長(zhǎng)時(shí)間卡著不動(dòng)不報(bào)錯(cuò)也不執(zhí)行的問(wèn)題
某日開(kāi)發(fā)同事上報(bào)一sql性能問(wèn)題,一條查詢好似一直跑不出結(jié)果,查詢了n小時(shí),還未返回結(jié)果,這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL執(zhí)行語(yǔ)句長(zhǎng)時(shí)間卡著不動(dòng)不報(bào)錯(cuò)也不執(zhí)行問(wèn)題的相關(guān)資料,需要的朋友可以參考下2024-02-02PostgreSQL誤刪數(shù)據(jù)庫(kù)該怎么辦詳解
這篇文章主要介紹了PostgreSQL中誤刪數(shù)據(jù)庫(kù)的恢復(fù)方法,包括備份恢復(fù)、歸檔日志恢復(fù)和操作系統(tǒng)層面的快照恢復(fù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03