是否有可能對插入或更新表達式(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. fn_cdc_map_lsn_to_time在某些情況下返回NULL
- 2. 防止在某些情況下提交表格
- 3. WPF MVVM防止的SelectedValue綁定在某些情況下
- 4. 如何防止Windows.Forms.TabControl在某些情況下切換選項卡?
- 5. 在某些情況下
- 6. 在某些情況下
- 7. System.Security.Cryptography.ProtectedData.Unprotect在某些情況下
- 8. SQL只評估某些情況某些情況下db2和sybase
- 9. Android Node.getNodeValue在某些情況下返回NULL
- 10. 防止Java在某些例外情況下打印堆棧跟蹤
- 11. 服務器端的onclick但防止回發在某些情況下
- 12. 如何防止Fluent驗證在某些情況下驗證模型
- 13. solr「 - 」在某些情況下不起作用並且適用於某些情況
- 14. Android在某些情況下崩潰
- 15. vb.net FTP - 工作在某些情況下
- 16. PowerBIClient在某些情況下生成System.ArrayTypeMismatchException
- 17. php:在某些情況下避免__get?
- 18. 的UIImageView autoresizingmask在某些情況下
- 19. 在某些情況下創建它
- 20. ExtJS的5 rowediting在某些情況下
- 21. 使用@XmlTransient只在某些情況下
- 22. 在某些情況下隱藏CheckBoxPreference
- 23. 在某些情況下只保存NSManagedContext
- 24. RichEditBox在某些情況下崩潰。
- 25. GridView HeaderText在某些情況下爲空
- 26. 在某些情況下的IdentifierForVendor值
- 27. Rails - 在某些情況下使用CSS
- 28. 如何讓javax.validation在某些情況下
- 29. AspectJ和Spring IOException在某些情況下
- 30. Bootstrap toggle/switch在某些情況下阻止onChange事件
已經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