[保姆教程] [Postgres] 1分鐘深入瞭解Postgres主鍵自增
簡介
用最簡單的教程,抓住最重要的點。本章教程將帶你認識Postgres的自增的用法,以及自增的原理。
本章節中會使用Navicat工具對Postgre的資料庫進行操作,如果你能按照教程操作,這將會幫助你加深印象。
初遇自增
顧名思義,就是自動增加,最終產生的結果會生成一組有序的值,也稱作序列值。
實際,我們僅僅需要兩步操作即可為一個欄位新增自增屬性,第一步,宣告自增變數,第二步引用自增變數。
宣告自增變數
首先,我們使用下面的SQL命令建立一個自增變數,語法如下:
--auto 是自定義變數的名稱,你可以使用任意名稱
CREATE SEQUENCE "public"."auto"
INCREMENT 1 --自增的步長(每一次增加多少)
MINVALUE 1 --屬性的最小值
MAXVALUE 9223372036854775807 --屬性的最大值
START 1 --初始的值
CACHE 1; --快取值的數量,預設值為1,表示每次只產生1個新的值
引用自增變數
其次,將該函式賦值給欄位的預設值,這樣我們就完成了自增欄位的設定
nextval('auto'::regclass)
例項操作
1. 2.
3. 4.
至此為止,自增屬性就設定完成了。
深入瞭解
-
大家經常提到主鍵自增,但其實自增和主鍵並沒有關係,非主鍵也可以自增,自增是一種獲取預設值的途徑之一。
-
還有很多種其他的途徑,如:隨機值,固定值,特定值等
-
-
自增變數是資料庫中的全域性變數,全域性唯一,多表共享。
-
全域性唯一意味著每個資料庫例項只能建立一個名為N的自增變數,重複建立會報錯。
-
多表共享,即每個表的每個欄位都有許可權訪問這個自增變數,表和自增變數是一種引用關係,表依引用並且賴自增變數。
-
自增變數不依賴任何表,即使資料庫中沒有任何表,你依然可以建立,檢視,修改或刪除自增變數
-
-
不同表之間引用同一個自增變數,得到的序列值按照表資料的新增順序分配序序列值
-
同一張表不同欄位引用同一個自增變數,得到的序列值按照欄位順序從左到右分配序列值
-
如果一次性插入多條資料,那麼就是先從左到右,再從上到下分配序列值
-
-
不同的資料庫之間自增變數不共享,且互不干擾
-
當資料庫中仍有欄位引用自增變數時,該自增變數無法刪除
-
需要將欄位預設值設定引用刪除,才可以刪除自增變數
-
擴充套件知識
- 獲取當前自增變數的值
SELECT currval('auto')
- 設定當前自增變數的值
SELECT setval('"public"."auto"', 1, false);
- 更新到下個序列值
SELECT nextval('auto');
- 刪除序列值
DROP SEQUENCE "public"."auto";
總結
自增自增是個啥,其實只是個變數哈,這個變數跟庫混,而且庫裡只有它
你要建立別建立倆,兩個一起老打架,刪除之前要記得,預設值得清空了
看著命令還挺多,能用上的也就兩三個,全會了,更賺.......
相關文章
- 深入瞭解MySQL中的自增主鍵MySql
- [保姆教程] [Postgres] 3分鐘在Ubuntu環境下安裝PostgresqlUbuntuSQL
- Postgres索引詳解索引
- Postgres Checkpoint
- postgres sqlSQL
- 瞭解Postgres 14新功能:效能和監控改進
- docker 部署 postgresDocker
- postgres crash recovery
- Oracle轉換PostgresOracle
- postgresql自增主鍵SQL
- Mysql關於自增主鍵,自增主鍵優化總結MySql優化
- Zalando Postgres Operator 快速上手
- postgres yum源安裝
- Postgres Basic Commands for Beginners
- Postgres併發處理
- Postgres 流複製配置
- LightDB/Postgres 使用ora2pg遷移Oracle到LightDB/PostgresOracle
- Postgres如何儲存行? - Ketan
- postgres複製表結構
- check_postgres.pl 的缺陷
- MySQL 中的自增主鍵MySql
- MySQL 主鍵自增也有坑?MySql
- Oracle 建立主鍵自增表Oracle
- Postgresql外部表使用 postgres_fdwSQL
- Postgres-XL安裝與配置
- Postgres-XC單機安裝
- MySQL資料庫遷移到PostgresMySql資料庫
- MySQL 主鍵自增 Auto Increment用法MySqlREM
- MySQL新增自增主鍵的坑MySql
- postgresql重置序列和自增主鍵SQL
- Postgres使用trigger自動重新整理物化檢視
- 雲原生 PostgreSQL 叢集 - PGO:來自 Crunchy Data 的 Postgres OperatorSQLGo
- 配置postgres9.3間的fdw——實現不同postgres資料庫間的互訪問資料庫
- 雲原生 PostgreSQL - CrunchyData PGO 教程:建立、連線、刪除 Postgres 叢集SQLGo
- Laravel 中使用 Redis 生成自增主鍵LaravelRedis
- MySQL8自增主鍵變化MySql
- SqlServer主鍵和自增長設定SQLServer
- MySQL自增主鍵跳號問題MySql