sql-server - SQL Server Management Studio - 文本选项的列约束
问题描述
我有一个简单的 SQL Server Management Studio 数据库,其中包含几个表。在每个表中都有几列。某些列我想要一个仅允许在约束中预定义的值的约束。
例如,一列名为 Valid(数据类型 = nchar(10)),我允许的唯一输入是 No 和 Yes。我能够完成这项工作:
Valid IS ('No', 'Yes')
SQL Server Management Studio 将其转换为:
([Valid]='No' OR [Valid]='Yes')
所以,这行得通,我测试了它。我在其他表中尝试了另外几列,但没有任何效果。我没有粘贴代码以避免隐藏字符。我将数据类型更改为 text、ntext,但它们仍然不起作用。
我希望这样的东西可以工作(目前不使用上面的任何语法示例):
([Location]='Outside' OR [Location]='Inside' OR [Location]='Around Building')
有什么想法吗?谢谢!
解决方案
使用 TSQL 创建或更改表,例如:
CREATE TABLE foo (
bar NCHAR(10) NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (N'No', N'Yes'))
)
或者
ALTER TABLE foo WITH CHECK ADD
CONSTRAINT CK_foo_bar CHECK (bar IN (N'No', N'Yes'))
或受限:
([bar]=N'Yes' OR [bar]=N'No')
推荐阅读
- scala - 在运行时获取 Akka HTTP 的版本
- html - 粘性下拉菜单。(溢出)
- java - react-native android bundle错误密钥库加载:密钥库密码不正确
- python - 使用 BeautifulSoup 解析 HTML 的所有页面
- java - 如何告诉 Selenium 在 Chrome 75 的打印弹出窗口上按取消?
- javascript - 添加 Javascript 变量值
- reactjs - Plugin/Preset 文件不允许导出对象,只有功能 --- 使用 babel-upgrade 后
- amazon-web-services - 失败的前提条件:表未初始化。在 aws sagemaker 部署的通用句子编码器上
- pandas - 如何计算熊猫数据框中同一列中两个日期之间的时间差并以工作日为单位
- angular - Angular 材质 Datepicker 抛出多个自定义值访问器与未指定名称属性的表单控件匹配