将列更改为列中的特定值可为空

时间:2013-06-19 07:10:11

标签: oracle

column x (Not NULL)          | column z 
1............................| P
0............................| T

我有一个检查约束:列x在(1,0)中,所以该列只接受值1和0
我想要的是什么真的很奇怪(我不想要一个程序或一个触发器)。我想要一种类似约束的方式来改变列z的可空值,使用x

列的值

示例:

  • 如果列x的值为1列z应为可为空,
  • 如果列x的值为0列z,则应为非空,默认为N

为什么我要这样?我正在使用oracle和sybase,sybase中的问题如果我在没有指定null的情况下添加列是否为null,自动它将不为null(添加test varchar(12)< - 默认情况下这将在sybase中为Null并且为null通过oracle,所以通过该列我想指明它的syabse或oracle)

也许一个程序会更好,但是如果我的问题还有另一种解决方法的话,我正在寻找。

1 个答案:

答案 0 :(得分:2)

我将从完整性检查约束开始:

ALTER TABLE <table> ADD CONSTRAINT chk_x_z CHECK (X = 1 OR Z IS NOT NULL)

这将确保始终强制执行您的业务规则。

您需要一个程序或触发器来实现自定义default N