是否可以添加数据库约束来限制行在两列中的一列中具有单个值,从不更多而且从不更少?让我来说明一下:
Sales Order Table
---------------------------------
id | person_id | company_id |
这样的行看起来像:
id | person_id | company_id |
---|-----------|------------|
1 | 1 | null |
2 | 2 | null |
3 | null | 1 |
4 | null | 2 |
在此图示中,销售订单的来源是个人或公司。它是一个或另一个,不多或少。我的问题是:有没有办法约束数据库,以便1)两个字段都不能为空,2)两个字段都不能为空?即,一个必须为空,一个必须为非空...
我知道一些人的初步反应可能是将两个表(人,公司)合并到一个客户表中。但是,我给出的例子只是一个非常简单的例子。在我的应用程序中,我正在使用的两个字段不能合并为一个。
我正在使用的DBMS是MySQL。
我希望这个问题有道理。提前感谢您的帮助!
答案 0 :(得分:1)
这可能会让人震惊......
mysql不支持CHECK
约束。它允许你定义它们,但它完全忽略了它们。
语法中只允许它们提供与其他数据库语法的兼容性。
您可以在更新/插入时使用触发器,并使用SIGNAL
引发异常。