gpt4 book ai didi

MySQL 可选约束

转载 作者:行者123 更新时间:2023-11-30 23:23:58 26 4
gpt4 key购买 nike

我有一个如下所述的数据库表。碰巧它支持具有多种形式的 Java EE 鉴别器实体,但我认为这对这个问题并不重要,我提供信息是为了完整性。

表中的行可以采用多种形式,哪些字段允许为空,哪些字段必须为非空由“类型”列的值定义。在这种情况下,例如,当 type = 'sail' 时,eShipePort 列应为非空且 eShipePorteDate 应该是唯一的。

有没有一种编写约束来支持这一点的方法?我真正追求的是 eShipePorteDate 的唯一性约束,当 `type = 'sail' 但不介意时当“类型”是其他值时,它们是多行且全部为空?

另一种方法是将表拆分为两个,一个表包含公共(public)列,另一个表用于“sail”特定内容。但我想尽可能避免这种情况,因为当我手动搜索数据库时,它使数据库选择更容易编写。

非常感谢您提供的任何建议或帮助。

mysql> desc vLegs;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| type | varchar(10) | NO | | NULL | |
| id | mediumint(9) | NO | PRI | NULL | auto_increment |
| end | datetime | YES | | NULL | |
| start | datetime | NO | | NULL | |
| flight | varchar(255) | YES | | NULL | |
| oprtv | mediumint(9) | NO | MUL | NULL | |
| dDate | date | YES | MUL | NULL | |
| dPort | varchar(5) | YES | | NULL | |
| dShip | varchar(10) | YES | | NULL | |
| eDate | date | YES | MUL | NULL | |
| ePort | varchar(5) | YES | | NULL | |
| eShip | varchar(10) | YES | | NULL | |
| landing | varchar(5) | YES | MUL | NULL | |
| takeoff | varchar(5) | YES | MUL | NULL | |
+---------+--------------+------+-----+---------+----------------+

最佳答案

根据您所描述的需求,我建议您为每种类型创建一个表。我对 mysql 的了解还不够,无法确定您尝试做的事情是否可以通过约束来实现。即使可能,听起来也很难理解和维护。

当您必须手动编写 SQL 时, View 可能会对用例有所帮助。

关于MySQL 可选约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243038/

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