如何限制可以放在列中的值范围?

时间:2019-01-09 08:31:21

标签: sql-server database

我是SQL的初学者, 我有一个带有GroupRole列和Age列的表。

    CREATE TABLE [Persons](
        [PersonID] [int] IDENTITY(1,1) NOT NULL,
        [FullName]   [varchar](70) NULL,
        [Age] [int] NULL,
        [GroupRole ] [varchar](30) NULL

 CONSTRAINT [PK_Persons] PRIMARY KEY CLUSTERED 
(
    [PersonID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

我想限制可以放置在年龄列低30的值范围 并且GroupRole列等于“ Admin”。

我不想在C#代码中执行此操作。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

这很简单:

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=30 AND GroupRole ='Admin');

答案 1 :(得分:0)

您需要使用Check Constraints。它们是表元数据的一部分,并定义了在数据被修改或插入表中时每次都要检查的条件。如果不满足这些条件,则DML操作将失败并显示错误。

您需要按如下所示修改CREATE TABLE语句:

select * 
from INVOICE_HEADING 
where INVOICE_DATE >=  '06 Dec 2018 00:00:00'
INVOICE_DATE <= '16 Dec 2018 00:00:00'