MariaDB 10.4.6下降场水平检查约束问题
我有一张这样的桌子:MariaDB 10.4.6下降场水平检查约束问题,mariadb,constraints,check-constraints,Mariadb,Constraints,Check Constraints,我有一张这样的桌子: CREATE TABLE test ( height int(10) CHECK(height>5) ); 当我尝试通过以下方式删除检查约束时: ALTER TABLE test DROP CONSTRAINT height; 我收到了以下错误消息: ERROR 1091 (42000): Can't DROP CONSTRAINT `height`; check that it exists 下面是显示创建表测试命令输出: +-------+-----
CREATE TABLE test (
height int(10) CHECK(height>5)
);
当我尝试通过以下方式删除检查约束时:
ALTER TABLE test DROP CONSTRAINT height;
我收到了以下错误消息:
ERROR 1091 (42000): Can't DROP CONSTRAINT `height`; check that it exists
下面是显示创建表测试代码>命令输出:
+-------+-------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
|
+-------+-------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`height` int(10) DEFAULT NULL CHECK (`height` > 5)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------+
这里是SELECT*from information_schema.table_约束,其中table_NAME='test'代码>输出:
+--------------------+-------------------+-----------------+------------------+------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
+--------------------+-------------------+-----------------+------------------+------------+-----------------+
| def | test_db | height | test_db | test | CHECK |
+--------------------+-------------------+-----------------+------------------+------------+-----------------+
MariaDB 10.2.1介绍了两种定义约束的方法:
- 作为列定义的一部分给出的检查(表达式)
- 约束[约束名称]检查(表达式)
如果使用第一种形式(列约束)定义约束,则可以使用修改列
:
altertable`test`
修改列'height`INT(10);
如果使用第二种形式(表约束),可以使用删除约束将其删除:
altertable`test`
放置约束“高度”;
看
MariaDB 10.2.1介绍了两种定义约束的方法:
- 作为列定义的一部分给出的检查(表达式)
- 约束[约束名称]检查(表达式)
如果使用第一种形式(列约束)定义约束,则可以使用修改列
:
altertable`test`
修改列'height`INT(10);
如果使用第二种形式(表约束),可以使用删除约束将其删除:
altertable`test`
放置约束“高度”;
请参阅。MySQL的内容:“可选符号指定约束的名称。如果省略,MySQL将根据表名、文字“chk”和序号(1,2,3,…)生成名称”;但是,Mariadb没有明确说明约束的名称。我的建议是使用约束检查…
语法来避免此类问题。Check fiddle:@MadhurBhaiya,感谢您的评论,但我无法更改约束创建行为。它是由framework.MySQL自动创建的:“可选符号指定约束的名称。如果省略,MySQL将根据表名、文本_chk_和序号(1,2,3,…)生成名称”;但是,Mariadb没有明确说明约束的名称。我的建议是使用约束检查…
语法来避免此类问题。Check fiddle:@MadhurBhaiya,感谢您的评论,但我无法更改约束创建行为。它是由框架自动创建的。