检查约束SQL Server

时间:2018-12-11 12:20:56

标签: sql sql-server

我有桌子,如图中所示。

enter image description here

那我想做什么...? 我想做一个约束,以检查ID可以重复两次且不能超过同一表中的ID,就像他在2018年1月1日进行考试时一样,他可以在15天后重复考试...? 这意味着一个月有机会重复两次考试,而不是更多。

我做一个

ALTER TABLE [dbo].[ESAMI]
ADD CONSTRAINT CHK_ColumnD_ESEMI CHECK > 2

但不起作用。

那我该怎么办呢? 预先感谢。

2 个答案:

答案 0 :(得分:1)

您应该写:

ALTER TABLE [dbo].[ESAMI]
ADD CONSTRAINT CHK_ColumnD_ESEMI UNIQUE(IdEsami)

答案 1 :(得分:0)

感谢丹尼斯先生,我找到了解决方案。

您首先必须创建一个像这样的函数:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION DBO.ESAMI_CHECK
(
    -- Add the parameters for the function here
    @IdStudente INT
)
RETURNS INT

AS
BEGIN
    RETURN (
        SELECT COUNT(*) 
        FROM ESAMI WHERE IdStudente=@IdStudente
        GROUP BY IdStudente 
    )   
END
GO

之后,您必须像这样进行约束:

ALTER TABLE [dbo].[ESAMI]
ADD CONSTRAINT CHK_ColumnD_ESEMI
CHECK (DBO.ESAMI_CHECK(IdStudente) <= 2)

仅此而已,它将完美运行。谢谢大家,祝你有美好的一天。