如何删除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

(其中IdNotNullNOT 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

Sql相关问答推荐

当编号和版本的唯一状态更改时报告

如何并行SELECT和RESET?

如何从上一个值减go 值

如何退回当年的所有参赛作品?""

我如何计算字母a出现的字符串的次数?

通过 Select 值的顺序进行排序ClickHouse

替换条件中的单元格值

仅 for each 唯一ID返回一个元素,并仅返回最新连接的记录

使用Kotlin Exposed SQL DSL Select 多个值并排序

查询每周数据(周一至周日),避免年度日期重叠

每年独特口味的冰淇淋数量

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

如何为缺少的类别添加行

PostgreSQL:从多个字段收集特定指标的最后一个条目

识别SQL Server中的重复数字

如何使用SQL将患者平均分配给他们所在地区的doctor

在 postgresql 中,我可以将其组合成一个查询吗?

具有关联统计信息 N+1 的 Rails 6 索引资源?

如果当前日期是一周中的某一天,则从另一天提取结果

BigQuery 错误:SELECT 列表表达式引用 esthetician.LICENSE_TYPE,它既未在 [49:8] 分组也未聚合