示例:表中有两个日期/时间字段,分别为delivery_datequote date.delivery_date的值(在日历的后面)应始终大于quote_date.

这样的要求在表的模式中是否可以执行?也就是说,如果我try 在quote_date之前添加一个带有delivery_date的新行,它将拒绝更改.

推荐答案

是的,你可以用CHECK constraint来表示,例如:

ALTER TABLE mytable ADD CHECK (delivery_date > quote_date);

假设delivery_datequote_date被定义为MySQL DATE类型或另一种时态类型(即非字符串).

判断约束要求MySQL 8.0.16或更高版本.如果必须在较旧版本的MySQL上实现此功能,则必须在INSERT和UPDATE之前编写触发器,如果更改没有通过预期的约束,则使用SIGNAL中止更改.

Mysql相关问答推荐

加载数据本地infile,字段中有双引号和逗号

JOOQ-如何在一个查询中引用多个(但不是所有)表中的所有字段

SQL-从一个字段中 Select 值,但另一个字段中不包含零值

MySQL嵌套的内连接使查询变得很慢-解决方案?

在MySQL和JavaFX中保存和检索图像文件

含有子查询的MySQL函数出现语法错误

Golang中使用Gorm的Where条件转义字符无法正常工作的问题

模拟Mysql Cursor类的fetchone()方法,并将其返回值设置为None

mysqli 无法以非 root 用户身份连接

仅计算 DATEDIFF (MySQL) 中的工作日

计算MySQL中的连续出现

为什么 MySQL 不使用索引进行简单的SELECT * FROM Table WHERE field='value'查询?

谁能帮我优化低性能的mysql查询

此更新查询是否有任何可能的重写选项?

为什么一个 10 位的电话号码不能存储在长度为 10 的整数中?

如何在每个国家/地区查询 GHTorrent(类 SQL 语言)的最常用语言

MySQL按连续值和计数分组

重新加载 .env 变量而不重新启动服务器(Laravel 5,共享主机)

在 MySQL 中找不到 outfile 创建的文件

MySQL 中的 UNIQUE 索引是否区分大小写?