PostgreSQL 自带自增字段 请勿使用触发器或其他手段生成(Like Oracle, MySQL)

在Oracle中,因为不能设置字段的default sequence.nextval,所以如果要设置自增字段,需要使用触发器。
例如:

create sequence seq;
create table test(id int, info text);
CREATE OR REPLACE TRIGGER tg1 BEFORE INSERT ON test
FOR EACH ROW
BEGIN
  SELECT seq.nextval
  INTO :new.ID
  FROM dual;  
end;

这种方式能在INSERT前,把id的值改成seq.nextval。
从而达到自增主键的目的。
但是它的开销太大,而且非常不友好。


PostgreSQL中,建议这样使用

test=# create table test(id serial, info text);
CREATE TABLE
test=# insert into test (info) values (1);
test=# insert into test (info) values ('test');
test=# select * from test;
 id | info 
----+------
  1 | 1
  2 | test
(2 rows)

或者这样

test=# create sequence seq;
CREATE SEQUENCE
test=# create table test(id int default nextval('seq'), info text);
CREATE TABLE

或者这样

test=# create table test(id int, info text);
CREATE TABLE
test=# alter table test alter column id set default nextval('seq');
ALTER TABLE

请初次接触PG,PPAS或者以前有MySQL, Oracle使用经验的童鞋注意咯。

上一篇:mybatis Example条件查询


下一篇:mybatis 关联查询