Subject Re: [firebird-support] Re: FB 3.0, got problem when add field to Table with existing data
Author Mark Rotteveel
On 2016-06-02 6:20, trskopo@... [firebird-support] wrote:
>> What value must it have? Add a default clause to this statement. Or
> add
> > the field as nullable, populate with data and then alter to NOT
> NULL.
>
> I have tried to add field as nullable, then tried to alter to not
> null.
>
> UPDATE TMP_RPT SET ID1 = 5; Commit;
> (This statement is OK)
>
> UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = 1
> WHERE RDB$FIELD_NAME = ID1 AND RDB$RELATION_NAME = TMP_RPT;
> (This statement raised an error, FB 3.0 doesnt allow SysDBA user to
> change System table)

This is documented in the Firebird 3 release notes:

* Firebird 3 no longer allows direct modification of the system tables
(bar some exceptions), see
http://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-compat-systables.html.
* You can now modify the nullability through DDL with ALTER TABLE
<table name> ALTER <field name> { DROP | SET } [NOT] NULL, see
http://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-ddl-enhance.html#rnfb30-ddl-managenull

Mark