作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以添加数据库约束来限制一行在两列之一中具有单个值,并且永远不会更多也永远不会更少?让我举例说明:
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/
我是一名优秀的程序员,十分优秀!