如何删除 MySQL 中的 CHECK?
How to remove CHECK in MySQL?
我想从我的 table 中删除支票。当我在 MySQL 中使用这个查询时,我没有得到任何检查约束的名称。
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`)
)`
在MySQL8.0.16,我测试了你的table:
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 的早期版本不支持 CHECK 约束。没有什么可删除的,因为它不会在您创建 table.
时保存约束
我想从我的 table 中删除支票。当我在 MySQL 中使用这个查询时,我没有得到任何检查约束的名称。
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`)
)`
在MySQL8.0.16,我测试了你的table:
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 的早期版本不支持 CHECK 约束。没有什么可删除的,因为它不会在您创建 table.
时保存约束