SQL Server添加列约束以将数据限制为-1到1

问题描述:

我想约束SQL Server小数列以仅允许-1,0,1作为有效值。SQL Server添加列约束以将数据限制为-1到1

你能告诉我添加这样一个约束的SQL语法吗? (我想知道如何在CREATE TABLE语句和/或ALTER TABLE ADD CONSTRAINT中执行此操作)。

或者这只能在触发器中完成?

+0

这可以通过触发器来实现,但是这是艰辛的道路。 gbn给了你解决方案。 – Jonathan 2009-11-11 21:42:06

+0

或者,如果你想接受-1和+1之间的所有可能的值,你可以为MySQL搜索者创建一个约束'CHECK(bar BETWEEN -1.0 AND 1.0)' – 2009-11-11 22:03:30

CREATE TABLE foo (
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1)) 
) 

ALTER TABLE foo WITH CHECK ADD --added WITH CHECK 
    CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1)) --not needed "FOR bar" 

编辑:思念......

  • 为什么限制小数?你可以将它改为smallint或int吗?
  • 什么是NULL?您可能需要更改我的代码身边做你想要什么
+1

:“CHECK子句被解析,但被所有存储引擎“。从MySQL文档,是的,它真的被忽略 – 2014-03-10 18:28:26

您可能正在寻找CHECK Constraints

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