这可能是一个简单的答案,但我找不到它。我有一个带有整数列的表,我想确保插入一行时该列中的值大于零。我可以在代码方面做到这一点,但认为最好在桌面上执行它。
谢谢!
我的上一次评论错误,现在一切都很好。
答案 0 :(得分:15)
您可以对列使用检查约束。 IIRC的语法如下:
create table foo (
[...]
,Foobar int not null check (Foobar > 0)
[...]
)
正如下面的海报所说(感谢Constantin),你应该在表定义之外创建一个检查约束,并给它一个有意义的名称,这样很明显它适用于哪个列。
alter table foo
add constraint Foobar_NonNegative
check (Foobar > 0)
您可以从sys.check_constraints
:
select name
,description
from sys.check_constraints
where name = 'Foobar_NonNegative'
答案 1 :(得分:5)
创建数据库约束:
ALTER TABLE Table1 ADD CONSTRAINT Constraint1 CHECK (YourCol > 0)
您可以拥有非常复杂的约束,涉及多个列。例如:
ALTER TABLE Table1 ADD CONSTRAINT Constraint2 CHECK (StartDate<EndDate OR EndDate IS NULL)
答案 2 :(得分:0)
创建表格时添加CHECK
约束
CREATE TABLE Test(
[ID] [int] NOT NULL,
[MyCol] [int] NOT NULL CHECK (MyCol > 1)
)
答案 3 :(得分:0)
我相信你想在表格字段中添加一个CONSTRAINT:
ALTER TABLE tableName WITH NOCHECK
ADD CONSTRAINT constraintName CHECK (columnName > 0)
该可选的NOCHECK用于防止约束应用于现有的数据行(可能包含无效数据)和&amp;允许添加约束。
答案 4 :(得分:0)
您可以更改表格并添加以下约束(如波纹管)。
BEGIN TRANSACTION
GO
ALTER TABLE dbo.table1 ADD CONSTRAINT
CK_table1_field1 CHECK (field1>0)
GO
ALTER TABLE dbo.table1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT