选择不能为空的列名

时间:2020-10-20 10:12:10

标签: mysql mariadb

我想为设置了此属性的列修改“ not null”属性。

是否可以获取列名,然后运行“ ALTER TABLE ...”修改为“ null”,以便列的值是可选的?

3 个答案:

答案 0 :(得分:0)

您可以从INFORMATION_SCHEMA.COLUMNS获取表列信息。

select TABLE_NAME, COLUMN_NAME
from information_schema.COLUMNS
where TABLE_SCHEMA='yourdb' and is_nullable='NO'

答案 1 :(得分:0)

您可以从information_schema.columns中识别所有要更改的列及其属性。所以

select concat(
'Alter table ',
table_name,
' modify column ',
column_name,' ',
column_type,
';'
)
from information_schema.`COLUMNS` where table_schema = 'sandbox' and is_nullable = 'no'

将生成一堆alter语句。

您应该将沙箱更改为您感兴趣的架构。

注意,我尚未对此进行全面测试,请注意

答案 2 :(得分:-1)

您无法更改constraint,但可以删除然后重新创建。

按照以下步骤操作,您的问题将得到解决;

首先,取消约束:

ALTER TABLE your_table DROP CONSTRAINT ACTIVEPROG_FKEY1;

然后,重新创建它:

ALTER TABLE your_table
add CONSTRAINT ACTIVEPROG_FKEY1 FOREIGN KEY(ActiveProgCode) REFERENCES PROGRAM(ActiveProgCode)
    ON DELETE CASCADE;

参考:

How to Alter Constraint