如果其他列具有一定价值,则使该列为必填

时间:2019-05-26 04:30:26

标签: sql sql-server

我所拥有的:

IntFlag

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

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以使用检查约束:

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)
);

答案 1 :(得分:0)

这需要从将值插入数据库的前端进行处理。对于同一表,无法在数据库中基于另一列的一列上插入查询。