Как удалить нулевое ограничение для столбца в Firebird 2.5

Как удалить ненулевое ограничение для столбца в Firebird 2.5?

К сожалению, это не сработало:

Alter table ESTOQUE_GRUPO_SUBELEMENTO ALTER column ID_SUBELEMENTO  TYPE int  null  ;
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Firebird 2.5 вы не можете использовать DDL для добавления ограничения NOT NULL к существующему столбцу, а удаление возможно только косвенно, путем удаления ограничения по имени. Это было изменено в Firebird 3.0 (см. Управление нулевым значением в доменах и столбцах в примечаниях к выпуску Firebird 3.0).

NOT NULL реализован как ограничение. Если вы назвали его (или нашли сгенерированное имя в системных таблицах), вы можете удалить ограничение в Firebird 2.5. Как описано в Руководстве по Null в Firebird, раздел Делаем столбцы, не допускающие значения NULL, снова обнуляемыми.

Чтобы бросить это:

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

Хорошо, я подумал о том, чтобы в качестве альтернативы поставить какое-то значение по умолчанию, например 0. Рад, что удалось избавиться от ограничения not null.

Diego Alves 17.11.2022 17:39

Другие вопросы по теме