0

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

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。

我希望这个问题是有道理的。预先感谢您的帮助!

4

1 回答 1

1

这可能会令人震惊……

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

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


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

于 2013-05-05T03:50:01.987 回答