PostgreSQL设置时间自动更新的示例代码
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">默认时间</a></li><li><a href="#_label2">使用触发器更新时间</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2><p>在使用<code>PostgreSQL</code>数据库,可以通过设置字段的默认值和更新机制来实现自动更新时间和创建时间,但是跟<code>MySQL</code>又有点区别</p>
<p class="maodian"><a name="_label1"></a></p><h2>默认时间</h2>
<p>可以使用<code>CURRENT_TIMESTAMP</code>函数插入当前时间,<code>sql</code>语句为</p>
<div class="jb51code"><pre class="brush:sql;">CREATE TABLE sys_user (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
</pre></div>
<p>执行<code>insert</code>操作</p>
<div class="jb51code"><pre class="brush:sql;">insert into sys_user values(1, 'aaa')
</pre></div>
<p>时间会自动生成</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202503/202535111800750.jpg" /></p>
<p>执行更新操作</p>
<div class="jb51code"><pre class="brush:sql;">update sys_userset name = 'bbb' where id =1</pre></div>
<p>发现时间还是不变</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202503/202535111800751.jpg" /></p>
<p class="maodian"><a name="_label2"></a></p><h2>使用触发器更新时间</h2>
<div class="jb51code"><pre class="brush:sql;">CREATE TABLE sys_user (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
</pre></div>
<p>创建一个触发器</p>
<div class="jb51code"><pre class="brush:sql;">
create or replace function update_timestamp() returns trigger as
$$
begin
new.update_time= current_timestamp;
return new;
end
$$
language plpgsql;
</pre></div>
<p>然后执行语句</p>
<div class="jb51code"><pre class="brush:sql;">create trigger update_timestamp before update on sys_user for each row execute procedure update_timestamp();
</pre></div>
<p>其中,<code>sys_user</code>为表名,<code>update_timestamp</code>为触发器名称,随意填写,<code>update_timestamp()</code>为触发器函数名称</p>
<p>执行<code>insert</code>语句</p>
<div class="jb51code"><pre class="brush:sql;"> insert into sys_user values(1, 'aaa')</pre></div>
<p>其中,<code>sys_user</code>为表名,<code>update_timestamp</code>为触发器名称,随意填写,<code>update_timestamp()</code>为触发器函数名称</p>
<p>执行<code>insert</code>语句</p>
<div class="jb51code"><pre class="brush:sql;"> insert into sys_user values(1, 'aaa')</pre></div>
<p>结果如下</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202503/202535111800752.jpg" /></p>
<p>执行更新操作</p>
<div class="jb51code"><pre class="brush:sql;">update sys_userset name = 'bbb' where id =1</pre></div>
<p>结果如下</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202503/202535111800753.jpg" /></p>
頁:
[1]