在mariaDB中DROP CONSTRAINT自动生成列

mnemlml8  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(48)

我有一个列上有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中似乎不工作。我如何删除此检查?

1aaf6o9v

1aaf6o9v1#

这里的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 ;

相关问题