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>