自動遞增在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'); |