SQL 中的依赖项是必需的

Required If Dependency in SQL

如果未提供指定的列,我需要能够限制插入 table。

关键在于,还有一个依赖于该列的列,在提供时应强制执行所需的约束。

我查看了 CREATE TABLE 语句中的 CHECK 约束,但我不知道如何执行 IF THEN 语句来检查 fieldA,然后在 fieldB 上执行 required。

两列都可以为空,在某些情况下都不需要,但是当提供了 fieldA 时,我想限制数据库只允许 fieldB 的非空值。

所以对于一个文字示例,这是我的 table 称为 Person - 它具有以下列:

PersonID INT IDENTITY
Name VARCHAR(50) NULL
Age INT NULL 
DateOfBirth VARCHAR(20) NULL

现在,如果尝试将记录插入 Person 中,其中提供了 Age (fieldA),我想确保还提供了 DateOfBirth (fieldB)。

这种验证是从应用程序完成的,但我们也希望在我们的 table 上进行。

你想要一个 check 约束:

check ((DateOfBirth is null and age is null) or (DateOfBirth is not null and age is not null))

注:

  • 不要将日期存储为字符串。哇。我把它全大写了。
  • 存储年龄是个坏主意。它往往会经常变化。