postgresql_觸發函式,序列
阿新 • • 發佈:2018-11-09
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 欄位 = 內容;