
CREATE TABLE test_create_tab2 (
id SERIAL,
val VARCHAR(10)
)
Test=# CREATE TABLE test_create_tab2 (
Test(# id SERIAL,
Test(# val VARCHAR(10)
Test(# )
注意: CREATE TABLE 将为 serial 字段 "test_create_tab2.id" 创建隐含序列 "test_create_tab2_id_seq"
CREATE TABLE
Test=# \d test_create_tab2
资料表 "public.test_create_tab2"
栏位 | 型别 | 修饰词
------+-----------------------+-------------------------------------------------
-------
id | integer | 非空 缺省 nextval('test_create_tab2_id_seq'::regclass)
val | character varying(10) |
Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id')
INSERT 0 1
Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id 2')
INSERT 0 1
Test=# select * from test_create_tab2
id | val
----+---------
1 | NO id
2 | NO id 2
(2 行记录)
Test=# select lastval()
lastval
---------
2
(1 行记录)
最简单的方式:在创建表时使用serial类型(4字节整数),或者bigserial类型(8字节整数);其实际上是创建一个序列,然后设置此字段值为所创建的序列的下一个值(用法与Oracle中类似)。直接使用serail, bigserial的局限在于:不能指定序列的初始值和步长。
PostgreSQL不像SQL Server一样有identity关键字可以用来指定字段自增。但是它有序列值产生器可以使用,并且在数据字段定义时可以指定默认值为一个表达式,这样我们就可以使用序列值来作实现字段值自增。
步骤:
创建一个序列值
create sequence id_sequence increment 1 start 1
id_sequence为序列值名称,increment为步长默认为1,start为初始值,默认为1
在字段定义时,指定默认值为获取序列值(用nextval函数, 参数为序列值名称的字符串)
create table mytest (id integer not null default nextval('id_sequence'), txt varchar(100))欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)