【发布时间】:2019-09-13 16:08:28
【问题描述】:
我用以下脚本修改了一个表
ALTER TABLE TABLENAME ADD [flagField] CHAR(1) DEFAULT 'N' NOT NULL;
ALTER TABLE TABLENAME ADD CONSTRAINT XCK6_tablename CHECK([flagField] in ('Y', 'N'));
如果我想反转此脚本以更改表中的该字段以允许可空状态,是否需要在使该字段可空之前删除约束?
所以如果我运行
ALTER TABLE TABLENAME ALTER COLUMN fieldFlag CHAR(1) NULL
这样可以吗,还是我也应该删除约束?
【问题讨论】:
-
您使用的是 MySQL 8+ 吗?如果没有,检查约束甚至不起作用。
-
支票不应该被(永久)删除。但是,它仍然会阻止 NULL 被插入,除非它被更新为允许这样。
-
ALTER TABLE TABLENAME ALTER [flagField] CHAR(1) DEFAULT NULL; ALTER TABLE TABLENAME ALTER CONSTRAINT XCK6_tablename CHECK([flagField] in ('Y', 'N',null));
-
@dxlachx 。 . .您的语法看起来像 SQL Server,而不是 MySQL。虽然这不会影响答案(在这种情况下),但您应该正确标记您的问题。
-
@GordonLinoff 你说得对,我很抱歉——已修复
标签: sql sql-server null constraints alter