检查约束是否有效 - 试试这个:
CREATE TABLE Orders (OrderID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
TotalAmount DECIMAL(18,2),
Tax DECIMAL(5,2) CHECK (Tax >= 0.0 AND Tax <= 100.0)
)
现在,当您尝试插入数据时:
INSERT INTO dbo.Orders(TotalAmount, Tax)
VALUES (100.0, 2.75) --> works just fine
INSERT INTO dbo.Orders(TotalAmount, Tax)
VALUES (200.0, 15.75) --> works just fine
INSERT INTO dbo.Orders(TotalAmount, Tax)
VALUES (300.0, -2.0)
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束“CK__Orders__Tax__164452B1”冲突。冲突发生在数据库“test”、表“dbo.Orders”、列“Tax”中。
INSERT INTO dbo.Orders(TotalAmount, Tax)
VALUES (400.0, 200.75)
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束“CK__Orders__Tax__164452B1”冲突。冲突发生在数据库“test”、表“dbo.Orders”、列“Tax”中。
所以我想说 - 检查约束IS工作得很好...
Update:
如果您坚持以困难的方式执行此操作 - 使用(相当蹩脚的)视觉设计器 - 那么您需要在此处定义检查约束:
一旦我这样做了,然后我就去Edit top 200 rows
在 SQL Server Management Studio 中输入数据,并且我输入了违反检查约束的内容,我得到:
如果这对您的客户端应用程序不起作用 - 那么您很可能遇到了问题与客户端应用程序- 并且不与CHECK
SQL Server 中的约束!