我希望在映射表的列中添加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
答案 0 :(得分:2)
你可以创建一个id为参数的函数,并计算表
中有多少idALTER 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
此检查用于添加行和更新。