Firebird 列可空非空修改

2018-12-04

至少到Firebird 3.0.4 已经添加了设置可空 和 非空的语法:如

-- 删除非空(设置为可空)
ALTER TABLE TECH 
ALTER label drop NOT NULL
-- 设置为非空
ALTER TABLE TECH 
ALTER label SET NOT NULL

以下是以前版本,可修改系统表:

1、修改为非空
UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = 1
WHERE RDB$FIELD_NAME = 'C1' AND RDB$RELATION_NAME = 'T1';

2、修改为可空
UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = NULL
WHERE RDB$FIELD_NAME = 'C1' AND RDB$RELATION_NAME = 'T1';

T1 = 表名

C1 = 列名

note:若改为非空,修改完要保证列数据不能有空值。

Firebird3以后以上系统表不能再手动编辑了。

Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
UPDATE operation is not allowed for system table RDB$RELATION_FIELDS.

原文地址:https://www.cnblogs.com/jonney-wang/p/9689447.html