如何解决Oracle在同一张表上触发 根据信息模式:
我正在查看触发器,但无法理解正确的含义。
这是触发器DDL。
BEGIN
:new.C_DATE:=round((cast(sys_extract_utc(current_timestamp) as date) - TO_DATE('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)*1000;
:new.U_DATE:=round((cast(sys_extract_utc(current_timestamp) as date) - TO_DATE('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')) * 86400)*1000;
END;
据我了解,他们只是将当前时间戳记值获取为纪元格式,并将其转换为UTC,然后将其分配给C_DATE和U_DATE列。
根据信息模式:
触发类型:每行之前
触发事件:INSERT
对吗?他们是否将这个纪元值插入C_DATE和U_DATE列的同一表中?
解决方法
Trigger使用Unix Epoch填充值,并将其乘以1000-即Unix Epoch以毫秒为单位:-)
通过在SQL * Plus上执行进行测试:
select
to_char(round((cast(sys_extract_utc(SYSTIMESTAMP) as date) -
TO_DATE('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'))
* 86400) * 1000,'999999999999999')
from
dual;
在连接到Stratum 0 Timeserver的数据库计算机上(通常在生产环境中已获得此功能),然后从地址更新浏览器中的页面
https://www.epochconverter.com/
SQL * PLUS:
TO_CHAR(ROUND((C
----------------
1602172506000
网页:
1602172507
将网页值乘以1000即可得到
1602172507000
距SQL * Plus仅一秒钟(或1000毫秒)(我的切换速度非常快:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。