0

SELECT COUNT(*)ステートメントに基づいてチェックを行う既存のテーブルにチェック制約を追加したいと思います。SELECTステートメントは知っていますが、DROP AND CREATE TOスクリプトを作成したときに、コードを追加する場所とコードの形式がわかりません。

GUIでこれを行う方法はありますか、またはSELECT COUNT(*)を考慮して、誰かがCHECK制約を使用したCREATEテーブルステートメントの例を見せてもらえますか?

CHECK制約は、ここからブール値に評価する必要があることを知っています:http: //msdn.microsoft.com/en-gb/library/ms188258 (v=sql.105).aspx

4

1 に答える 1

3

The first thing of note is that you cannot directly use sub-queries in check constraints, but creating a function is the way around that. This will help you:

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 に答える