如果没有提供指定的列,我需要能够限制插入到表中。
这里是要注意的问题,还有另一列依赖于该列,当提供该列时,应强制执行所需的约束。
我已经查看了CHECK
语句中的CREATE TABLE
约束,但是我不知道如何执行IF THEN
语句来检查fieldA,然后在fieldB上强制执行。
这两个列都是可为空的,在某些情况下也不是必需的,但是当提供fieldA时,我想限制数据库仅允许fieldB的非空值。
因此,从字面上的示例来看,这是我的名为Person
的表-它具有以下列:
PersonID INT IDENTITY
Name VARCHAR(50) NULL
Age INT NULL
DateOfBirth VARCHAR(20) NULL
现在,如果尝试将记录插入提供了Person
(fieldA)的Age
中,我想确保也提供了DateOfBirth
(fieldB)。
这种验证是通过应用程序完成的,但我们也希望在表上进行验证。
答案 0 :(得分:3)
您需要SELECT DATEPART(YEAR,Timestamp) AS Year,
DATEPART(MONTH,Timestamp) AS Month,
SUM (CAST (Pass AS TINYINT)) AS Passes,
COUNT(*) as Total,
CAST (SUM (Pass) AS Money) / COUNT(*) AS Percentage
FROM table
GROUP BY DATEPART(YEAR,Timestamp), DATEPART(MONTH,Timestamp)
ORDER BY DATEPART(YEAR,Timestamp), DATEPART(MONTH,Timestamp)
约束:
check
注意: