我有桌子,如图中所示。
那我想做什么...? 我想做一个约束,以检查ID可以重复两次且不能超过同一表中的ID,就像他在2018年1月1日进行考试时一样,他可以在15天后重复考试...? 这意味着一个月有机会重复两次考试,而不是更多。
我做一个
ALTER TABLE [dbo].[ESAMI]
ADD CONSTRAINT CHK_ColumnD_ESEMI CHECK > 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)
仅此而已,它将完美运行。谢谢大家,祝你有美好的一天。