在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使用经验的童鞋注意咯。