SQL Server添加列约束以将数据限制为-1到1
问题描述:
我想约束SQL Server小数列以仅允许-1,0,1作为有效值。SQL Server添加列约束以将数据限制为-1到1
你能告诉我添加这样一个约束的SQL语法吗? (我想知道如何在CREATE TABLE语句和/或ALTER TABLE ADD CONSTRAINT中执行此操作)。
或者这只能在触发器中完成?
答
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
答
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
这可以通过触发器来实现,但是这是艰辛的道路。 gbn给了你解决方案。 – Jonathan 2009-11-11 21:42:06
或者,如果你想接受-1和+1之间的所有可能的值,你可以为MySQL搜索者创建一个约束'CHECK(bar BETWEEN -1.0 AND 1.0)' – 2009-11-11 22:03:30