postgresql使用觸發(fā)器設(shè)置自動(dòng)更新時(shí)間戳方法

大家都知道在我們?nèi)粘i_發(fā)中,在設(shè)計(jì)數(shù)據(jù)庫字段的時(shí)候不可避免的都要createTime(創(chuàng)建時(shí)間)以及updateTime(修改時(shí)間)兩個(gè)時(shí)間戳字段,作用大家也都一目了然。下面將為大家詳細(xì)介紹兩個(gè)字段的如何去設(shè)置來達(dá)到你想要的那個(gè)樣子.我將用Navicat以及sql語句來大家詳細(xì)介紹:

?1、create time

首先是 createTime,我們可以通過Navicat在添加字段時(shí)候?qū)⒆侄卧O(shè)置為timestamp類型,生成時(shí)間戳方式為**CURRENT_TIMESTAMP**或者設(shè)置為now()

至于SQL語句只需在建表過程default 一下就行這里不做贅述。

?2、updtae time

接下來是updateTime,也就是我們本篇文章的重點(diǎn),相信你已經(jīng)找遍了度娘還沒解決吧,哈哈,沒關(guān)系,我來幫你解決。

postgresql 更新時(shí)間戳需要通過觸發(fā)器來實(shí)現(xiàn)。

1、首先需要通過代碼創(chuàng)建函數(shù),也就是定義觸發(fā)器

create or replace function cs_timestamp() returns trigger as

$$

begin

? new.updatetime= current_timestamp;

? return new;

end

$$

language plpgsql;

cs_timestamp():為你定義函數(shù)的名稱。

updatetime:為你表中更新時(shí)間戳字段名稱(pgsql不可以大寫的)。

其他的不用管執(zhí)行就可以了。此過程只能通過sql實(shí)現(xiàn)。

2、接下來就是創(chuàng)建觸發(fā)器了

create trigger cs_name before update on student for each row execute procedure cs_timestamp();

cs_name:觸發(fā)器名稱,可以隨意設(shè)置,但是不要虎了吧唧整成中文的。

?student:表名

cs_timestamp():觸發(fā)器所要用的函數(shù)名稱,與第一步函數(shù)名稱保持一致。

此過程可以通過Navicat設(shè)置,我用的是Navicat15,大家僅供參考呢

說明:更新字段這邊不選,就是任意一個(gè)字段都會(huì)觸發(fā)update_time的更新,勾選的話,只有勾選字段才會(huì)觸發(fā)。但是勾選字段上限為15個(gè)。

結(jié)尾:當(dāng)然函數(shù)可以在建好表后定義,也可以在建表前定義,這里無傷大雅。

補(bǔ)充:圖中的切記不用選字段的地方,可以指定你想要的字段來控制updatetime時(shí)間戳的改變

最后的效果圖:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容