是否有可能对插入或更新表达式(SQL Server 2008 R2)表示条件验证,如果列B等于12,13或14,则列A不能为空。在某些情况下防止null
2
A
回答
7
你可以用一个台级CHECK
constraint实现这个:
ALTER TABLE YourTable
ADD CONSTRAINT CK_YourCheck
CHECK(ColumnA IS NOT NULL OR ColumnB NOT IN (12, 13, 14))
1
是的,你可以这样做使用Check Constraint
像这样的事情?
ADD CONSTRAINT check validCHECK (
((B BETWEEN 12 and 14) AND A IS NOT NULL)
OR B NOT BETWEEN 12 and 14
);
0
在一阶逻辑,这是被称为含义:
IF x THEN y
运用implcation法,上述可转化为这样:
(NOT (x)) OR y
代您的表达式:
IF column B is equal to 12,13 or 14 THEN A cannot be null
运用implcation法:
(NOT (column B is equal to 12,13 or 14)) OR A cannot be null
代SQL表达式:
(NOT (B IN (12, 13, 14))) OR (NOT (A IS NULL))
应用德摩根定律:
(NOT x) OR (NOT y) is equivlent to NOT (x AND y)
因此:
NOT (B IN (12, 13, 14) AND A IS NULL)
SQL DDL:
ALTER TABLE YourTable ADD
CONSTRAINT your_rule
CHECK (NOT (B IN (12, 13, 14) AND A IS NULL));
+0
任何人都知道为什么这一个downvoted? – onedaywhen 2012-03-05 16:13:27
相关问题
- 1. 防止在某些情况下提交表格
- 2. 如何防止Windows.Forms.TabControl在某些情况下切换选项卡?
- 3. 如何防止Fluent验证在某些情况下验证模型
- 4. 防止Java在某些例外情况下打印堆栈跟踪
- 5. Android在某些情况下崩溃
- 6. PowerBIClient在某些情况下生成System.ArrayTypeMismatchException
- 7. AspectJ和Spring IOException在某些情况下
- 8. 的UIImageView autoresizingmask在某些情况下
- 9. 在某些情况下只保存NSManagedContext
- 10. php:在某些情况下避免__get?
- 11. GridView HeaderText在某些情况下为空
- 12. 使用@XmlTransient只在某些情况下
- 13. 在某些情况下创建它
- 14. Bootstrap toggle/switch在某些情况下阻止onChange事件
- 15. 在某些情况下阻止路线导航
- 16. 删除的情况下某些其他情况下
- 17. 如何在某些情况下序列化某些属性
- 18. 如何禁止某些情况下的ViewPager分页给某些孩子?
- 19. 占位符检查在某些情况下有效,并且在某些情况下不会
- 20. 加载HTML内容的NULL我<title>标签在某些情况下
- 21. 我该如何无限循环,但在某些情况下停止?
- 22. 在某些情况下,我可以永远防止重新启动我的节点脚本吗?
- 23. 在LINQ中查询/搜索列表(在某些情况下)
- 24. 为什么在某些情况下需要将#放在Lisp中?
- 25. Array.prototype.sort()在某些情况下工作而其他人不在
- 26. 防止在Oracle中删除某些行
- 27. 在什么情况下document.open()返回null?
- 28. 防止在没有密码的情况下打开硬盘。
- 29. 如何在我的情况下防止竞争条件
- 30. Postgres的:如何防止INSERT在特殊情况下
已经upvoted,但可能值得添加基于特定问题的示例代码。 – 2012-03-01 19:37:42
@Damien_The_Unbeliever好的建议,加... – 2012-03-01 19:42:30
奇怪...当我尝试这个我得到的错误ALTER TABLE语句与CHECK约束CK_YourCheck冲突...语句如何与不存在的约束冲突。而且如果你想知道,我没有仔细检查数据,现在不违反约束条件。 – keithwarren7 2012-03-01 19:52:21