psql 關於主鍵自增的問題


在psql中往往我們需要設置一個自增的主鍵id字段,psql中不像SQL Server那樣點選 打鈎傻瓜式就能設置好的,是需要創建序列的:CREATE SEQUENCE,關鍵字SEQUENCE。

我們先看看創建過后的結果:

(用的Navicat工具)

我們可以看到設置自增后字段默認:nextval('bid_id_seq'::regclass) ,bid為我的表名。

故可以譯為:下一個值為此表下此字段的注冊自增序列。


 

如何創建id自增字段?

答:建表時使用“serial”關鍵字,“PRIMARY KEY”關鍵字為設置主鍵。故設置主鍵自增id方式如下: 

  
1 create table test_b 
2 ( 
3   id serial PRIMARY KEY, //主鍵並自增
4   name character varying(64) 
5 );
View Code

 

 如果表已經建好,並且表里已經有了數據,缺id自增字段?

  答:先手工增加id字段,再去創建SEQUENCE序列,建立test_b_id_seq,最后設置字段開始自增的id。

  如表已經建好,用下面的語句即可生成自動增長序列:   

  
 1 --先創建SEQUENCE
 2 CREATE SEQUENCE test_b_id_seq 
 3     START WITH 1    //從1開始
 4     INCREMENT BY 1  //自增空間為1
 5     NO MINVALUE 
 6     NO MAXVALUE 
 7     CACHE 1; 
 8         
 9 --建立自增test_b_id_seq
10 alter table test_b alter column id set default nextval('test_b_id_seq'); 
11 
12 --設置字段開始自增的id
13 SELECT setval('test_b_id_seq', (SELECT MAX(id) FROM test_b)+1)
View Code

 

 以上是在Navicat工具里操作的,當然還可以用大象客戶端pgAdmin。建議:不管用不用id字段,建表時可以加上自增id主鍵,避免后期麻煩。(傻屌網友陳二狗遇到過坑的)


 

最后本街帥附送一個語句,清空表數據 讓自增id從1開始:  

  
1 TRUNCATE  TABLE  test_b;//清空表數據
2 ALTER SEQUENCE test_b_id_seq RESTART WITH 1;//重置自增id從1開始
View Code

 

以上為本帥工作中用psql遇到過的操作,歡迎評論轉載,轉載請務必留下原文地址 便於學習分享~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM