0

我想向一个已经存在的表添加一个检查约束,该表基于 SELECT COUNT(*) 语句进行检查。我知道我的 SELECT 语句,但是当我创建 DROP AND CREATE TO 脚本时,我不确定在哪里添加我的代码以及它应该采用什么格式?

有没有办法在 GUI 中执行此操作,或者有人可以向我展示一个带有 CHECK 约束的 CREATE 表语句的示例,考虑到 SELECT COUNT(*)?

我知道 CHECK 约束只需从这里评估为布尔值:http: //msdn.microsoft.com/en-gb/library/ms188258 (v=sql.105).aspx

4

1 回答 1

3

首先要注意的是,您不能在检查约束中直接使用子查询,但是创建一个函数是一种解决方法。这将帮助您:

CREATE FUNCTION dbo.fnRedRows()
RETURNS INT
AS
BEGIN
    DECLARE @Return INT
    SELECT @Return=COUNT(*) FROM dbo.Red
    RETURN @Return
END
GO
CREATE TABLE dbo.Red 
(
    id INT IDENTITY(1,1), 
    test VARCHAR(max), 
    CONSTRAINT CK_MaxRows CHECK (dbo.fnRedRows()<5)
)
GO
INSERT INTO dbo.Red (test) VALUES ('HI')
INSERT INTO dbo.Red (test) VALUES ('The')
INSERT INTO dbo.Red (test) VALUES ('first four')
INSERT INTO dbo.Red (test) VALUES ('will work')
INSERT INTO dbo.Red (test) VALUES ('This one will fail')
GO
DROP TABLE dbo.Red
GO
DROP FUNCTION dbo.fnRedRows
GO
于 2013-01-29T20:20:37.367 回答