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

我有一个检查约束:(1, 0) 中的 x 列,所以该列只接受
我想要的值 1 和 0,这真的很奇怪(我不想要过程或触发器)。我想要一种类似约束的方法来通过列具有z的值来更改列的可为空x

例子:

  • 如果列x的值为 1 列z应该可以为空,
  • 如果列x的值为 0 列z应该不为空,默认为 N

我为什么要那个?我正在使用 oracle 和 sybase,sybase 中的问题,如果我添加列而不指定是否为 null ,它会自动不为 null(添加 test varchar(12) <-- 这将在 sybase 中默认为 Null 并且由oracle ,所以我想通过该列指定它是 syabse 还是 oracle)

也许程序会更好,但我正在寻找是否有其他方法可以解决我的问题。

4

1 回答 1

2

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

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

这将确保您的业务规则始终得到执行。

您将需要一个过程或一个触发器来实现您的自定义default N.

于 2013-06-19T07:38:58.350 回答