行计数的SQL Server约束

时间:2014-03-25 18:23:43

标签: sql-server

我希望在映射表的列中添加3个以上的id实例的数据库级别块。我不想使用触发器或向表中添加任何非计算列。我尝试了索引视图,但我无法在查询中使用HAVING或CAST,因为下面显示的两个无效示例。有什么想法吗?

CREATE VIEW VW WITH SCHEMABINDING AS
SELECT col1, CAST(COUNT_BIG(*)+252 AS TINYINT) a
FROM tbl1 GROUP BY col1

CREATE VIEW VW WITH SCHEMABINDING AS
SELECT col1, COUNT_BIG(*), CAST(256 AS TINYINT) a
FROM tbl1 GROUP BY col1 HAVING COUNT(*)>3

1 个答案:

答案 0 :(得分:2)

你可以创建一个id为参数的函数,并计算表

中有多少id
ALTER FUNCTION [dbo].[test](@id integer)
RETURNS int
AS
BEGIN
   DECLARE @retval int
   SELECT @retval = COUNT(*) FROM table where id = @id
   RETURN @retval
END

然后你可以在表格中添加一个检查约束,检查id< = 3 检查约束的测试将是

dbo.test(id) <= 3

此检查用于添加行和更新。