mysql - mysql忽略检查约束
问题描述
我有这段代码,我想在 MySQL 中实现它,但不支持 CHECK。我该怎么做?
CREATE TABLE Fare (
type_of_passenger varchar(20),
price FLOAT,
PRIMARY KEY (type_of_passenger),
CHECK (lower(type_of_passenger)='child' OR lower(type_of_passenger)='student' OR lower(type_of_passenger)='senior')
);
解决方案
你确定你需要那张支票吗?由于主键是type_of_passenger
您只能拥有三行..这似乎有点过头了
您可以只INSERT
使用这 3 行并继续前进。如果您在外键中引用此字段,则无论如何您都将被限制为表中的值
事实上,一旦您使用使用 ON UPDATE RESTRICT 和 ON DELETE RESTRICT 的外键引用每个值,您将无法更改它们
我可以在这里看到的唯一有效的问题是您希望允许数据库用户更改price
但不是type_of_passenger
如果您INSERT
从正确(或存根)数据开始,则可以通过权限控制表和列访问
注意我会在这里使用一个代理无符号整数主并且唯一的字符串描述,因此如果我确实需要更改字符串,我可以不用担心,并且不会影响更新所有引用它的表的性能
推荐阅读
- javascript - 如何对 Stripe API 结果进行分页?
- python - PyGame Blit 的位置无效
- javascript - 同一页面中的 PHP 函数
- angular - Angular 5如何预加载和缩小styles.scss
- apache-spark - Spark 2.4.0 functions.udf 不适用于集合
- c# - 无法从 DataTable C# 返回行
- python-3.x - 如何使用 py2neo v4 和 Neo4j 合并节点和关系
- c# - 为什么 double.MaxValue 输出的最大长度与 double max = 1.79769313486232E307 不同;
- javascript - Laravel 与 RiotJS 的混合
- mysql - 如何为选择语句设置默认值