在 mariaDB 中删除约束自动生成的列 CHECK

问题描述 投票:0回答:1

我有一张桌子,其列上有

CHECK
。该检查未使用特定名称显式添加,因此它会获得自动生成的名称。

CREATE TABLE `test` (
  `quantity` INT(11) NOT NULL CHECK (quantity > 0)
);
SELECT TABLE_NAME, CONSTRAINT_NAME FROM information_schema.check_constraints;

输出:

TABLE_NAME  CONSTRAINT_NAME
test    quantity

但似乎我无法通过其自动生成的名称来

DROP
这个约束。

ALTER TABLE `test` DROP CONSTRAINT `quantity`;

输出:

ERROR 1091 (42000) at line 8: Can't DROP CONSTRAINT `quantity`; check that it exists

此过程适用于 MySQL(具有不同的自动生成名称),但似乎不适用于 mariaDB 10.7.8。我怎样才能删除这张支票?

mariadb constraints
1个回答
0
投票

这里的

CHECK
是作为列定义的一部分给出的,您可以使用
MODIFY COLUMN
删除它:

ALTER TABLE `test`
  MODIFY COLUMN `quantity` INT(11) NOT NULL;

但是如果使用

CONSTRAINT [constraint_name] CHECK (expression)
添加它,例如:

CREATE TABLE `test` (
  `quantity` INT(11) NOT NULL,
   CONSTRAINT quantity_check CHECK (`quantity` > 0)
);

然后您可以使用

DROP CONSTRAINT
删除它:

ALTER TABLE `test` DROP CONSTRAINT quantity_check ;
© www.soinside.com 2019 - 2024. All rights reserved.