我一直坚持在SQL Server上创建约束

我一直坚持在SQL Server上创建约束,sql,sql-server,database,Sql,Sql Server,Database,我是SQL Server管理的新手,我尝试在表中添加约束 情况是,我创建了一个列,其中只允许对“Y”或“N”进行赋值 因此,我试图通过右键单击表中的“约束”在ManagementStudio中创建约束 但是,我真的不知道创建约束的语法。最后,我尝试通过引用来自Internet的模板将代码输入到“检查约束表达式”窗口。SQL Server总是告诉我“验证Constant时出错” 你们能帮我写第一个约束条件吗?因为我真的不知道如何开始 我的要求是: I have a table called "Cu

我是SQL Server管理的新手,我尝试在表中添加约束

情况是,我创建了一个列,其中只允许对“Y”或“N”进行赋值

因此,我试图通过右键单击表中的“约束”在ManagementStudio中创建约束

但是,我真的不知道创建约束的语法。最后,我尝试通过引用来自Internet的模板将代码输入到“检查约束表达式”窗口。SQL Server总是告诉我“验证Constant时出错”

你们能帮我写第一个约束条件吗?因为我真的不知道如何开始

我的要求是:

I have a table called "Customer"
I created a column called "AllowRefund"
The column "AllowRefund" is only allowed to 'Y' or 'N'

谢谢。

我建议不要做你想做的事。有一种数据类型(位),用于表示具有两种状态的值。如果使用此类型,则根本不需要约束。SQL Server将强制该值为1或零,无需额外的工作。你只需将应用程序设计为将1视为是,将0视为否


你尝试的方法不是一个好主意,也不会带来任何好处。

我建议你不要尝试这样做。有一种数据类型(位),用于表示具有两种状态的值。如果使用此类型,则根本不需要约束。SQL Server将强制该值为1或零,无需额外的工作。你只需将应用程序设计为将1视为是,将0视为否


您尝试的方法不是一个好主意,也不会带来任何好处。

您可以按如下方式进行:

ALTER TABLE Customer 
ADD CONSTRAINT CK_Customer_AllowRefund
CHECK (AllowRefund in ('Y','N'))

但是@JohnFx是正确的-您最好将此列设为一个位字段。

您可以按如下方式执行此操作:

ALTER TABLE Customer 
ADD CONSTRAINT CK_Customer_AllowRefund
CHECK (AllowRefund in ('Y','N'))

但是@JohnFx是正确的-您最好将此列设为一个位字段。

我部分同意JohnFix,但由于了解定义检查约束的正确语法可能在将来对您有用(因为您显然没有阅读手册),以下是创建此类约束的SQL:

alter table customer 
  add constraint check_yes_no check (AllowRefund in ('Y', 'N'));
您可能还希望将该列定义为
notnull
,以确保始终具有该列的值


(由于我不使用“Management Studio”,我无法告诉您必须在何处以及如何输入该SQL)。

我部分同意JohnFix,但由于了解定义检查约束的正确语法可能在将来对您有用(因为您显然不阅读手册),以下是创建此类约束的SQL:

alter table customer 
  add constraint check_yes_no check (AllowRefund in ('Y', 'N'));
您可能还希望将该列定义为
notnull
,以确保始终具有该列的值


(由于我没有使用“Management Studio”,我无法告诉您必须在何处以及如何输入SQL)。

好的,谢谢您的建议。我将重新选择数据类型。但是,我真的不知道“检查约束表达式”的基本语法是什么。你能给我一个关于它的文章链接吗?我在网上查了一下,我发现只有通过查询同时创建表和创建约束。好的,谢谢你的建议。我将重新选择数据类型。但是,我真的不知道“检查约束表达式”的基本语法是什么。你能给我一个关于它的文章链接吗?我查了一下互联网,我发现唯一的方法是同时创建表和通过查询创建约束。对于好奇者,右键单击导航器中的数据库并选择“新建查询”,从2008年开始。对于好奇者,右键单击导航器中的数据库并选择“新建查询”,从2008年开始。