【发布时间】:2015-02-26 07:56:26
【问题描述】:
您好,开发人员要求在表中添加一个默认值为“N”的列,但是如果条目的 id = 3,则该列的默认值应为“Y”,无论如何我可以在 oracle 中实现这一点吗?
【问题讨论】:
-
我通常从应用程序端处理这些事情。只需
column = 'N'; if(id == 3) then column = 'Y'; -----store row in DB------。如果 DB 中存在现有行,则只需使用case when现有行语句更新列。 -
可能在插入期间为此添加触发器?
-
VIRTUAL column和DECODE函数就是你所需要的。 -
@Deepak Pawar:我通常不会在应用程序中处理这个问题,因为数据库完整性会受到威胁,因为您可能无法控制所有应用程序。此外,从维护的角度来看,许多应用程序可能需要更新。
-
记录的ID真的是3还是不是?然后我们在谈论一张唱片。插入 ID 为 3 且值为“Y”的记录,并将“N”设为列的默认值。
标签: sql oracle oracle11g oracle10g