在UPDATE期间触发列的默认值

时间:2018-07-13 03:15:22

标签: oracle sql-update oracle12c

我想知道Oracle 12c的这种情况;

  1. 表X的A列具有默认值'default'NOT NULL修饰符
  2. 我在表X中插入了新行,并且列A的值为'not-default'
  3. 我希望将上一行的A列更新为给定列的默认值,即'default'

有不知道默认值的简短方法吗?我可以做类似的事情吗?

UPDATE X SET A = DEFAULT_VAL(A) WHERE ...

尝试更新为null显然会触发ORA-01407: cannot update ("schema"."X"."A") to NULL,我想知道Oracle上是否有这样的功能。

1 个答案:

答案 0 :(得分:2)

我们可以在update和insert语句中使用默认关键字。 例如

 update x set A = default where ...

这将对您的情况有帮助,在其他情况下,例如我不想在插入语句中添加列子句

insert into table values (val1, val2, default);

如果我们不能使用默认值,那么我们必须添加列子句,相同的查询将如下所示

insert into table (col1, col2, col3) values (val1, val2, default);