代码之家  ›  专栏  ›  技术社区  ›  buræquete Naveen Kocherla

在更新期间触发列的默认值

  •  1
  • buræquete Naveen Kocherla  · 技术社区  · 6 年前

    我想知道甲骨文12c的情况;

    1. 表X有A列,默认值为 'default' NOT NULL 修饰语
    2. 我在表x中插入一个新行,列a有值 'not-default'
    3. 我希望将上述行的A列更新为给定列的默认值,即 '默认'

    在不知道默认值的情况下,有没有一个简单的方法可以做到这一点?我能做点什么吗?

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gaj    6 年前

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

     update x set A = default where ...
    

    这将有助于您的情况,在另一种情况下,如我不想在insert语句中添加column子句,如

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

    如果我们不能使用default,那么我们必须添加column子句,相同的查询如下

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