postgresql_触发函数,序列

1.自动插入序号:

创建自然数序列:

     CREATE SEQUENCE schema名.seq名
                INCREMENT 2
                START 1
                MINVALUE 1
                MAXVALUE 99999999
                CACHE 1;

     ALTER SEQUENCE schema名.seq名 OWNER TO user名;

使用序列:

     SELECT nextval('schema名.seq名');

设定字段缺省值为序列:

     alter table schema名.table名 alter column 字段名 set default nextval('schema名.seq名');

insert语句插入:

    insert INTO schema名.table名(字段名) VALUES(值);

2.自动插入时间戳:

2.1生成记录的时间戳;

设定时间的函数和宏:

CURRENT_DATE:2018-11-05
CURRENT_TIME:23:27:07.554511+08
CURRENT_TIMESTAMP:2018-11-05 23:27:30.620134+08
CURRENT_TIME (precision):秒位的小数精度
CURRENT_TIMESTAMP (precision):秒位的小数精度
LOCALTIME:23:28:40.586968,去除时区信息
LOCALTIMESTAMP:2018-11-05 23:29:20.317981,去除时区信息
LOCALTIME (precision):秒位的小数精度
LOCALTIMESTAMP (precision):秒位的小数精度

设置缺省值为当前时间:

alter table schema名.table名 alter column字段名 set default LOCALTIMESTAMP (1);

2.2更新记录的时间戳;

            触发函数:

create or replace function schema名.函数名() returns trigger as
    $$
    begin
        new.字段名= current_timestamp;
        return new;
    end
    $$
    language plpgsql;

             作用table:

create trigger 触发器名 before update on 表名 for each row execute procedure schema名.函数名();

             作用场景:

update table名 set 字段='内容' where 字段 = 内容;

 

你可能感兴趣的:(postgresql)