我有一个具有空值的可空列,我想为表中的新插入添加默认约束。
我的变更代码:
alter table customer_02
modify reference default on null
'No References';
我不断收到错误ORA-02296的含义,表中已经存在空值,因此无法启用新的默认值。如何只为新插入插入默认值,而不影响以前的数据?
跑
Update customer_02 set reference = 'No references' where reference is null
第一
整个列必须遵守约束;您不能让旧数据保持为空,然后安装“非空”规则。您说的是references列可以在其中曾经包含null(意味着“ no reference”)的地方包含“ no reference”(没引用),因此更新这些旧的null值应该不会有什么危害,因此它们与新的null值保持一致规则,那么您可以实施新规则
如果您非常希望旧行保持为空,而新行不能为空,则需要使用(插入之前)触发器,如果:new.reference列为null,则引发错误,并将该列保留为可为空。我会避免这种情况有两个原因,一个原因是它使用触发器,它们通常是完成事情的一种不好的方式,其二是因为它建立了一个看起来不必要的不一致之处,这会使将来的开发人员感到困惑。如前所述,如果null不再作为表示没有引用的方式,则应调整旧数据。如果前端需要一个值,则将其保留为null可能还会在其他地方留下错误-您可能最终导致用户在调用旧记录时遇到崩溃。
我建议始终力求数据建模的一致性,即使这意味着要调整旧数据
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句