如何重写 mysql 约束语法?

How to rewrite mysql constraints syntax?

我需要使用 phpmyadmin

在 mysql 上添加检查约束

我有一个table wp_nrOrevePerPunetore 有 3 列 IDstart_dateend_date

这个很好用

alter table wp_nrOrevePerPunetore add constraint conEnddtbiggerThanStartDt check(end_date < '2030-01-01' );

但是这个

alter table wp_nrOrevePerPunetore add constraint conEnddtbiggerThanStartDtt 
check(end_date > start_date );

抛出此错误:

Static analysis: 1 errors were found during analysis.

A new statement was found, but no delimiter between it and the previous one. (near "check" at position 79)

执行第二个约束的正确语法是什么?

ps: start_date和end_date都是日期时间类型

phpMyAdmin 尝试对您的 SQL 语句进行语法验证,但它已经落后并且无法识别新版本 MySQL 中的有效语法。我查看了 changelog for phpMyAdmin,但我没有看到任何提及他们添加了对检查约束的支持。

所以这不是 MySQL 服务器的问题,而是 phpMyAdmin 的问题。请参阅此开放功能请求:https://github.com/phpmyadmin/phpmyadmin/issues/13592

MySQL 从 8.0.16 (2019-04-25) 开始支持 CHECK 约束,但 phpMyAdmin 并未包含对该语法的支持,这令人非常失望。但是 phpMyAdmin 是一个 open-source 项目,只有两个独立的程序员完成大部分工作,所以进展缓慢。

对该问题报告的评论说:

Right now, you can add the CHECK constraint with a custom SQL statement. Even though the parser indicates a syntax error, it works.

如果您使用 command-line MySQL 客户端,而不是 phpMyAdmin,您也可以应用检查约束。