Oracle 不使用新列的默认值更新现有记录
我有一张有一些唱片的桌子 我想在此表中添加一个Oracle 不使用新列的默认值更新现有记录,oracle,Oracle,我有一张有一些唱片的桌子 我想在此表中添加一个时间戳列类型(LAST\u MODIFIED)。我想将这个新列的默认值设置为SYSDATE 但我想确保添加此列时,现有记录不会将此列的值设置为SYSDATE。如何实现这一点?您应该将其作为两个单独的操作:添加列和设置默认值 SQL> create table some_data (id integer); Table created SQL> insert into some_data select rownum from dual
时间戳
列类型(LAST\u MODIFIED
)。我想将这个新列的默认值设置为SYSDATE
但我想确保添加此列时,现有记录不会将此列的值设置为SYSDATE
。如何实现这一点?您应该将其作为两个单独的操作:添加列和设置默认值
SQL> create table some_data (id integer);
Table created
SQL> insert into some_data select rownum from dual connect by level <= 5;
5 rows inserted
SQL> alter table some_data add date_modified date;
Table altered
SQL> alter table some_data modify date_modified default sysdate;
Table altered
SQL> insert into some_data (id) values (6);
1 row inserted
SQL> select * from some_data;
ID DATE_MODIFIED
--------------------------------------- -------------
1
2
3
4
5
6 17.03.2015
6 rows selected
SQL>创建一些表数据(id整数);
创建的表
SQL>insert into some_data从dual connect by level alter table中选择rownum some_data add date\u modified date;
表格更改
SQL>alter table一些\u数据修改日期\u修改默认系统日期;
表格更改
SQL>插入一些_数据(id)值(6);
插入1行
SQL>从一些数据中选择*;
ID日期\u已修改
--------------------------------------- -------------
1.
2.
3.
4.
5.
6 17.03.2015
选择6行
您应该将其作为两个单独的操作:添加列和设置默认值
SQL> create table some_data (id integer);
Table created
SQL> insert into some_data select rownum from dual connect by level <= 5;
5 rows inserted
SQL> alter table some_data add date_modified date;
Table altered
SQL> alter table some_data modify date_modified default sysdate;
Table altered
SQL> insert into some_data (id) values (6);
1 row inserted
SQL> select * from some_data;
ID DATE_MODIFIED
--------------------------------------- -------------
1
2
3
4
5
6 17.03.2015
6 rows selected
SQL>创建一些表数据(id整数);
创建的表
SQL>insert into some_data从dual connect by level alter table中选择rownum some_data add date\u modified date;
表格更改
SQL>alter table一些\u数据修改日期\u修改默认系统日期;
表格更改
SQL>插入一些_数据(id)值(6);
插入1行
SQL>从一些数据中选择*;
ID日期\u已修改
--------------------------------------- -------------
1.
2.
3.
4.
5.
6 17.03.2015
选择6行
您应该将其作为两个单独的操作:添加列和设置默认值
SQL> create table some_data (id integer);
Table created
SQL> insert into some_data select rownum from dual connect by level <= 5;
5 rows inserted
SQL> alter table some_data add date_modified date;
Table altered
SQL> alter table some_data modify date_modified default sysdate;
Table altered
SQL> insert into some_data (id) values (6);
1 row inserted
SQL> select * from some_data;
ID DATE_MODIFIED
--------------------------------------- -------------
1
2
3
4
5
6 17.03.2015
6 rows selected
SQL>创建一些表数据(id整数);
创建的表
SQL>insert into some_data从dual connect by level alter table中选择rownum some_data add date\u modified date;
表格更改
SQL>alter table一些\u数据修改日期\u修改默认系统日期;
表格更改
SQL>插入一些_数据(id)值(6);
插入1行
SQL>从一些数据中选择*;
ID日期\u已修改
--------------------------------------- -------------
1.
2.
3.
4.
5.
6 17.03.2015
选择6行
您应该将其作为两个单独的操作:添加列和设置默认值
SQL> create table some_data (id integer);
Table created
SQL> insert into some_data select rownum from dual connect by level <= 5;
5 rows inserted
SQL> alter table some_data add date_modified date;
Table altered
SQL> alter table some_data modify date_modified default sysdate;
Table altered
SQL> insert into some_data (id) values (6);
1 row inserted
SQL> select * from some_data;
ID DATE_MODIFIED
--------------------------------------- -------------
1
2
3
4
5
6 17.03.2015
6 rows selected
SQL>创建一些表数据(id整数);
创建的表
SQL>insert into some_data从dual connect by level alter table中选择rownum some_data add date\u modified date;
表格更改
SQL>alter table一些\u数据修改日期\u修改默认系统日期;
表格更改
SQL>插入一些_数据(id)值(6);
插入1行
SQL>从一些数据中选择*;
ID日期\u已修改
--------------------------------------- -------------
1.
2.
3.
4.
5.
6 17.03.2015
选择6行
显示您的sqlstatement@Jens:ALTER TABLE MYTABLE ADD(上次修改的时间戳);显示您的sqlstatement@Jens:ALTER TABLE MYTABLE ADD(上次修改的时间戳);显示您的sqlstatement@Jens:ALTER TABLE MYTABLE ADD(上次修改的时间戳);显示您的sqlstatement@Jens:ALTER TABLE MYTABLE ADD(上次修改的时间戳)@Apurv没有要求阻止这种情况。触发器有它自己的问题;比如说,它阻止了。@PavelGatnar:您在问题的哪里看到了阻止列更新的要求?@Pavel,触发器的值是多少,它不适用于直接插入的记录,也不适用于同时添加的任何其他记录?这是胡说八道。禁止在生产环境中禁用触发器,因为它会破坏所有用户的业务逻辑;它只能在独占模式下完成。@Sanders软件我们已经在多家公司使用触发器解决方案20多年了,也许它有一些价值。。。顺便说一句,触发器不仅更新列,还将数据库中的所有更改报告给应用程序日志,并间接报告给MQ,以便分发给SAP和其他系统。@Apurv没有要求阻止这种情况。触发器有它自己的问题;比如说,它阻止了。@PavelGatnar:您在问题的哪里看到了阻止列更新的要求?@Pavel,触发器的值是多少,它不适用于直接插入的记录,也不适用于同时添加的任何其他记录?这是胡说八道。禁止在生产环境中禁用触发器,因为它会破坏所有用户的业务逻辑;它只能在独占模式下完成。@Sanders软件我们已经在多家公司使用触发器解决方案20多年了,也许它有一些价值。。。顺便说一句,触发器不仅更新列,还将数据库中的所有更改报告给应用程序日志,并间接报告给MQ,以便分发给SAP和其他系统。@Apurv没有要求阻止这种情况。触发器有它自己的问题;比如说,它阻止了。@PavelGatnar:您在问题的哪里看到了阻止列更新的要求?@Pavel,触发器的值是什么,它对直接插入的记录和