如果其他列具有特定值,则需要该列

use*_*884 1 sql sql-server

我拥有的:

CREATE TABLE [dbo].[User]
(
    [id] INT NOT NULL PRIMARY KEY, 
    [name] VARCHAR(50) NOT NULL, 
    [postcode] INT NOT NULL, 
    [phone] INT NULL
)
Run Code Online (Sandbox Code Playgroud)

我想要的是仅当邮政编码高于 40000 时才需要电话号码。如果邮政编码小于 40000,用户可以插入电话号码,尽管它不是必需的。

我该怎么做呢?

Gau*_*vsa 5

您可以使用检查约束:

CREATE TABLE [dbo].[User]
(
    [id] INT NOT NULL PRIMARY KEY, 
    [name] VARCHAR(50) NOT NULL, 
    [postcode] INT NOT NULL, 
    [phone] INT NULL, 
    CONSTRAINT CHK_Postcode CHECK (postcode >= 4000 OR Phone IS NOT NULL)
);
Run Code Online (Sandbox Code Playgroud)