SQL Server添加列约束以将数据限制为-1到1
我想约束SQL Server十进制列,使其仅允许-1,0,1作为有效值 您能告诉我添加这样一个约束的SQL语法吗。(我想知道如何在CREATETABLE语句和/或ALTERTABLEADD约束中执行此操作) 或者这只能在触发器中完成SQL Server添加列约束以将数据限制为-1到1,sql,sql-server,tsql,constraints,Sql,Sql Server,Tsql,Constraints,我想约束SQL Server十进制列,使其仅允许-1,0,1作为有效值 您能告诉我添加这样一个约束的SQL语法吗。(我想知道如何在CREATETABLE语句和/或ALTERTABLEADD约束中执行此操作) 或者这只能在触发器中完成 CREATE TABLE foo ( bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1)) ) 或 编辑:想法 为什么要限制小数?你能把它改成smallint或int吗 空值呢?
CREATE TABLE foo (
bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)
或
编辑:想法
- 为什么要限制小数?你能把它改成smallint或int吗
- 空值呢?您可能需要更改我的代码以完全按照您的要求执行
CHECK(bar在-1.0和1.0之间)
可能对MySQL搜索者有用:“CHECK子句被所有存储引擎解析但忽略。”从MySQL文档中可以看出,它确实被忽略了
ALTER TABLE foo WITH CHECK ADD --added WITH CHECK
CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1)) --not needed "FOR bar"
create table (
x integer check (x = -1 or x = 0 or x = 1),
y integer
);
insert test values(5,5)
insert test values(-1, 5)
insert test values(0, 5)
insert test values(1, 5)
alter table test with nocheck add check(y = -1 or y = 0 or y = 1);
-- with no check prevents errors for illegal values already in the table
insert test values(-1, 1)
insert test values(0, -1)
insert test values(1, 0)
select * from test