postgreSQL自動遞增主鍵創方法

來源:互聯網
上載者:User

自動遞增在postresql中只要把欄位類型設定為serial就可以了。

比如

 代碼如下 複製代碼

CREATE TABLE st_cat
(
id serial NOT NULL,
parentid integer, — 父id
catname character varying(20), — 分類名稱
memo character varying(500), — 備忘
issub integer — 是否有子分類
)
WITH (
OIDS=FALSE
);
ALTER TABLE st_cat
OWNER TO postgres;
COMMENT ON COLUMN st_cat.parentid IS ‘父id’;
COMMENT ON COLUMN st_cat.catname IS ‘分類名稱’;
COMMENT ON COLUMN st_cat.memo IS ‘備忘’;
COMMENT ON COLUMN st_cat.issub IS ‘是否有子分類’;


在網上看到類似的代碼,就奇怪

 代碼如下 複製代碼

nextval('test_a_id_seq'::regclass)

這個是從哪裡來的,

後來在pgAdmin裡面找到了,是在相應的表的欄位,會出現

 代碼如下 複製代碼

ALTER TABLE test_a ADD COLUMN id integer;
ALTER TABLE test_a ALTER COLUMN id SET NOT NULL;
ALTER TABLE test_a ALTER COLUMN id SET DEFAULT nextval('test_a_id_seq'::regclass);

使用最後的那個就好了。

這樣就可以隨心所欲的插入資料了。

Java代碼裡面,sqlSession.commit();操作是不可少的,要不然看不到結果。

你還可以用每行的 oid 欄位作為一個唯一值。不過,如果你需要傾倒和重載資料庫,你需要使用 pg_dump 的 -o 選項或者 COPY WITH OIDS 選項以保留 OID。

 代碼如下 複製代碼

insert into person values(nextval('person_id_req'),'yourname');

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.