约束数据库以保存一个值或另一个保持两个值

时间:2013-05-03 02:59:16

标签: mysql database constraints

是否可以添加数据库约束来限制行在两列中的一列中具有单个值,从不更多而且从不更少?让我来说明一下:

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。

我希望这个问题有道理。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这可能会让人震惊......

mysql不支持CHECK约束。它允许你定义它们,但它完全忽略了它们。

语法中只允许它们提供与其他数据库语法的兼容性。


您可以在更新/插入时使用触发器,并使用SIGNAL引发异常。