ORACLE:如何使用现有的NULL值更改表默认值

我有一个带有空值的可空列,我想为表中的新插入添加默认约束。

我的密码:

alter table customer_02
modify reference default on null
'No References';

我一直收到错误ORA-02296的含义,我表中已有空值,因此无法启用新的默认值。如何只为新插入插入默认值而不影响以前的数据?

w602350769 回答:ORACLE:如何使用现有的NULL值更改表默认值

运行

Update customer_02 set reference = 'No references' where reference is null

第一

整列必须遵守约束;您不能让旧数据保持为空,然后安装“非空”规则。您说的是references列可以在其中曾经包含null(意味着“ no reference”)的地方包含“ no reference”(没引用),所以更新这些旧的null值应该不会有什么危害,因此它们与新规则,那么您可以实施新规则

如果您非常希望旧行保持为空,而新行不能为空,则需要使用(插入前)触发器,如果​​:new.reference列为null,则引发错误,并将列保留为可为空。我将避免这种情况有两个原因,一个原因是它使用触发器,它们通常是完成事情的一种不好的方式,其二是因为它建立了似乎不必要的不​​一致之处,这会使将来的开发人员感到困惑。如前所述,如果null不再是表示没有引用的方式,则应调整旧数据。如果前端需要一个值,将其保留为null可能还会在其他地方留下错误-您可能最终导致用户在调用旧记录时遇到崩溃。

我建议始终力求在数据建模方面保持一致性,即使这意味着要调整旧数据

本文链接:https://www.f2er.com/3087483.html

大家都在问