1. 程式人生 > >postgresql_觸發函式,序列

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 欄位 = 內容;