如何删除Firebird 2.5中列的NOT NULL约束?
遗憾的是,这并没有奏效:
Alter table ESTOQUE_GRUPO_SUBELEMENTO ALTER column ID_SUBELEMENTO TYPE int null ;
如何删除Firebird 2.5中列的NOT NULL约束?
遗憾的是,这并没有奏效:
Alter table ESTOQUE_GRUPO_SUBELEMENTO ALTER column ID_SUBELEMENTO TYPE int null ;
在Firebird 2.5中,不能使用DDL向现有列添加NOT NULL
约束,只能通过按名称删除约束来间接删除.这在Firebird 3.0中进行了更改(请参阅Firebird 3.0发行说明中的Manage Nullability in Domains and Columns).
A NOT NULL
被实现为约束.如果您为其命名(或在系统表中查找生成的名称),则可以在Firebird 2.5中删除该约束.如第Firebird Null Guide条第Making non-nullable columns nullable again节所述.
要放弃它,请执行以下操作:
alter table Adventures drop constraint IdNotNull
(其中IdNotNull
是NOT NULL
约束的名称)
要查找约束的名称,可以使用以下查询:
select rc.rdb$constraint_name from rdb$relation_constraints rc inner join rdb$check_constraints cc on rc.rdb$constraint_name = cc.rdb$constraint_name where rc.rdb$constraint_type = 'NOT NULL' and rc.rdb$relation_name = '<TableName>' and cc.rdb$trigger_name = '<FieldName>'
有关更多详细信息,请参阅上面的链接.
在Firebird 3.0和更高版本中,您还可以使用
alter table table_name alter column_name drop not null