如何删除mysql中的签入?

yuvru6vn  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(228)

我想把支票从table上放下来。当我在mysql中使用这个查询时,我没有得到任何check约束的名称。

SHOW CREATE TABLE test

CREATE TABLE `test (``ID` int(11) NOT NULL AUTO_INCREMENT,
 `price` int(11) DEFAULT NULL CHECK (`price` > 20),
PRIMARY KEY (`ID`)
)`
xbp102n0

xbp102n01#

在mysql 8.0.16中,我测试了您的表:

mysql> CREATE TABLE test (ID int(11) NOT NULL AUTO_INCREMENT,  price int(11) DEFAULT NULL CHECK (price > 20), PRIMARY KEY (ID) );

mysql> SHOW CREATE TABLE test\G

***************************1. row***************************

       Table: test
Create Table: CREATE TABLE `test` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `price` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  CONSTRAINT `test_chk_1` CHECK ((`price` > 20))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

现在我们看到mysql自动生成的check约束的名称。

mysql> ALTER TABLE test DROP CHECK test_chk_1;

这记录在https://dev.mysql.com/doc/refman/8.0/en/alter-table.html | DROP {CHECK | CONSTRAINT} symbol 一旦我删除了check约束,它就不再显示:

mysql> SHOW CREATE TABLE test\G

***************************1. row***************************

       Table: test
Create Table: CREATE TABLE `test` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `price` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

如果您使用的是8.0.16之前的mysql版本,则不需要执行任何操作,因为早期版本的mysql不支持检查约束。没有要删除的内容,因为创建表时它不会保存约束。

相关问题