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)
也许一个程序会更好,但是如果我的问题还有另一种解决方法的话,我正在寻找。
答案 0 :(得分:2)
我将从完整性检查约束开始:
ALTER TABLE <table> ADD CONSTRAINT chk_x_z CHECK (X = 1 OR Z IS NOT NULL)
这将确保始终强制执行您的业务规则。
您需要一个程序或触发器来实现自定义default N
。