serial简单使用如下:

create table stest (id serial,name varchar(10));
insert into stest values(nextval('stest_id_seq'),'bai');
insert into stest values(nextval('stest_id_seq'),'xiao');
insert into stest values(nextval('stest_id_seq'),'yu');

select * from stest;

1;"bai"
2;"xiao"
3;"yu"

insert into stest values(null,'test');

错误:  在字段 "id" 中空值违反了非空约束
DETAIL:  失败, 行包含(null, test).
********** 错误 **********

错误: 在字段 "id" 中空值违反了非空约束
SQL 状态: 23502
详细:失败, 行包含(null, test).

可以再插入的时候缺省这个serial字段,这样就自动的生成下一个值

insert into stest(name) values('test');
select * from stest;

1;"bai"
2;"xiao"
3;"yu"
4;"test"

select * from pg_class where relname like 'stest%';

我们看到自动生成了一个stest_id_seq的对象

文档上面的描述

CREATE TABLE tablename (
    colname SERIAL

等价于声明下面几个语句:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

删除该表,则与这个表相关联的sequence自动删除

drop table stest;

select * from pg_class where relname like 'stest%';

如果手工创建序列,语法如下

CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table_name.column_name | NONE } ]

如果添加了temp,那么这个序列只会存在于这个会话中,会话结束时这个序列会自动删除。别的选项都跟oracle一样了



CREATE SEQUENCE serial START 101;


select currval('serial');
select nextval('serial');

要先使用nextval,在使用currval获取当前的值,currval返回的是最近一次使用nextval获得的值。否则直接使用currval会报错。

select lastval();返回任何序列的最近的nextval的值。

select setval('serial',300);设置序列的值

select nextval('serial'); 是设置的值+1

throw java用法 java throw怎么用

throwthrow用于抛出具体异常类的对象,一般用于方法体中。 什么时候使用:当所写代码不满足某些条件致使程序无法运行时可以借助throw抛出一个异常对象提醒程序员。public class Student { private int age; public int getAge() { return age; public void setAge(int age)

java JSONSchema 指定日期格式 json传日期

服务器向客户端传递数据如果数据量大,需要考虑将其转换为json格式在传递,但是其在传递日期的时候客户端却无法转换过来。在网上搜索了下解决方案,主要有三种方法,具体介绍如下:方法一:在服务器端将日期格式使用Select方法或LINQ表达式转换后发到客户端//学生对象集合 List<Student> students = new List<Student&gt