gpt4 book ai didi

mysql - 限制数据库保存一个值或另一个值,但决不能同时保存这两个值

转载 作者:行者123 更新时间:2023-11-29 13:53:09 24 4
gpt4 key购买 nike

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

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)两个字段都不能为非空?即,一个必须为空,一个必须为非空...

我知道一些人的第一 react 可能是将两个表(个人、公司)合并到一个客户表中。但是,我给出的例子只是一个非常简单的例子。在我的应用程序中,我正在使用的两个字段无法合并为一个。

我正在使用的 DBMS 是 MySQL。

我希望这个问题有意义。预先感谢您的帮助!

最佳答案

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

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

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

<小时/>

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

关于mysql - 限制数据库保存一个值或另一个值,但决不能同时保存这两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com