约束数据库保存一个值或另一个值,不要同时保存两个值



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

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。

我希望这个问题是有意义的。提前感谢您的帮助!

这可能会让你感到震惊…

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

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


您可以在update/insert上使用触发器,并使用SIGNAL引发异常

相关内容

  • 没有找到相关文章

最新更新