0

我对 SQL Server 管理完全陌生,我尝试在表中添加约束。

情况是我创建了一个只有 'Y' 或 'N' allowed to be value的列。

因此,我尝试通过右键单击表中的“约束”在 Management Studio 中创建约束。

但是,我真的不知道创建约束的语法。最后,我参考网上的模板,尝试将代码输入到“检查约束表达式”窗口。SQL Server 总是告诉我“错误验证约束”。

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

我的要求是:

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

谢谢。

4

3 回答 3

1

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

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

于 2012-11-02T22:10:27.650 回答
1

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

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

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

于 2012-11-02T22:14:24.813 回答
1

我部分同意 JohnFix,但知道定义检查约束的正确语法可能对您将来有用(因为您显然不阅读手册),这里是创建这样一个约束的 SQL:

alter table customer 
  add constraint check_yes_no check (AllowRefund in ('Y', 'N'));

您可能还希望将列定义为NOT NULL以确保始终具有该值。

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

于 2012-11-02T22:14:35.513 回答