rlo*_*ang 12 sql oracle oracle19c
鉴于这张表
create table FOO
(
ID number(19) primary key,
DATE1 DATE default sysdate,
DATE2 DATE
);
Run Code Online (Sandbox Code Playgroud)
当我插入一行时,DATE1 用 sysdate 初始化,然后设置为 null,然后复制到 DATE2:
insert into FOO (ID) VALUES (1);
update FOO set DATE1 = null where id = 1;
update FOO set DATE2 = DATE1 where id = 1;
select DATE2 from FOO;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,DATE2 最终为空。
但是如果我分两步创建表:
create table FOO
(
ID number(19) primary key
);
alter table FOO
add DATE1 DATE default sysdate
add DATE2 DATE;
Run Code Online (Sandbox Code Playgroud)
并运行相同的插入和更新,DATE2 最终成为 DATE1 的原始 sysdate 值。即使 DATE1 按预期最终为空。
为什么会有这样的差异?这两张桌子对我来说看起来是一样的。
更新:在这两种情况下描述都是这样的:
SQL> describe foo
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
DATE1 DATE
DATE2 DATE
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
206 次 |
最近记录: |