在psql中往往我們需要設置一個自增的主鍵id欄位,psql中不像SQL Server那樣點選 打鉤傻瓜式就能設置好的,是需要創建序列的:CREATE SEQUENCE,關鍵字SEQUENCE。 我們先看看創建過後的結果: (用的Navicat工具) 我們可以看到設置自增後欄位預設:nextval( ...
在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遇到過的操作,歡迎評論轉載,轉載請務必留下原文地址 便於學習分享~~~