我有一张桌子,其列上有
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。我怎样才能删除这张支票?
这里的
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 ;