inset插入时间不一致问题记录

今天业务反应有一个表intime、senddate两个字段的设置是取默认值sysdate。
但是我们在plsql中插入一条记录(这两个字段为空不填数值),系统中生成的默认时间是sysdate +10分钟。

插入测试数据后时间的确+10分钟

使用dbms_metadata.get_ddl 查看该表创建语句发现该表为同义词并且使用DB_LINK连接到另一个库

在查看两主机时间,发现的确有时差
oracle@nadian:/home/oracle> date
Thu May 28 16:55:07 EAT 2020

oracle@nadian1:/home/oracle> date
Thu May 28 17:04:13 CST 2020


使用DB_LINK和本地时间对比,结果是一致的
select sysdate from dual union all select sysdate from dual@nadian_A1.nadian.MOBILE.COM
2020/5/28 16:56:12
2020/5/28 16:56:12

-----nadian
SQL> select sysdate from dual;
SYSDATE
-----------------
20200528 17:00:48

SQL>  select sysdate from dual@nadian_A1.nadian.MOBILE.COM;
SYSDATE
-----------------
20200528 17:00:50

------nadian1
SQL> SQL> select sysdate from dual;

SYSDATE
-----------------
20200528 17:10:14


如下实验可以证明

创建表
 SQL>  CREATE TABLE "DBMT"."SMNOTIFY_TEST"
  2     (    "REGION" NUMBER(4,0) NOT NULL,
  3          "INTIME" DATE DEFAULT sysdate NOT NULL ,
  4          "SENDDATE" DATE DEFAULT sysdate
  5     );
Table created.
   
 
远端库创建该表同义词,并插入测试数据
SQL>     CREATE OR REPLACE SYNONYM "DBMT"."SH_SMNOTIFY_TEST" FOR "DBMT"."SMNOTIFY_TEST"@"LNK_SMS_A1.HEBEI.MOBILE.COM";

Synonym created.

SQL> SQL> insert into DBMT.SH_SMNOTIFY_TEST(region) values(311);

1 row created.


查看时间确实为源表段的系统时间,问题一目了然,修改系统时间即可
SQL> select * from  DBMT.SH_SMNOTIFY_TEST;

    REGION INTIME            SENDDATE
---------- ----------------- -----------------
       311 20200528 17:09:36 20200528 17:09:36





猜你喜欢

转载自www.cnblogs.com/nadian-li/p/12982399.html
今日推荐