由于 firebird 3 我无法修改列类型
在我使用这种更新之前:
update RDB$RELATION_FIELDS set
RDB$FIELD_SOURCE = 'MYTEXT'
where (RDB$FIELD_NAME = 'JXML') and
(RDB$RELATION_NAME = 'XMLTABLE')
因为我收到 ISC 错误 335545030。
也许火鸟3还有另一种方式?
由于 firebird 3 我无法修改列类型
在我使用这种更新之前:
update RDB$RELATION_FIELDS set
RDB$FIELD_SOURCE = 'MYTEXT'
where (RDB$FIELD_NAME = 'JXML') and
(RDB$RELATION_NAME = 'XMLTABLE')
因为我收到 ISC 错误 335545030。
也许火鸟3还有另一种方式?
Firebird 3 不再允许直接更新系统表,因为这是一种可能破坏数据库的方法。另请参阅发行说明中的系统表现在是只读的。您将需要使用 DDL 语句进行修改。
看起来您想将列的数据类型更改为域。您将需要使用alter table ... alter column ...
它。具体来说,您需要执行以下操作:
alter table XMLTABLE
alter column JXML type MYTEXT;
这确实有一些限制:
更改列的数据类型:TYPE 关键字
关键字 TYPE 将现有列的数据类型更改为另一种允许的类型。不允许进行可能导致数据丢失的类型更改。例如,CHAR 或 VARCHAR 列的新类型中的字符数不能小于它的现有规范。
如果列被声明为数组,则不允许更改其类型或维数。
外键、主键或唯一约束中涉及的列的数据类型根本无法更改。
此声明在 Firebird 1 (InterBase 6.0) 之前就已经可用。
火鸟 2.5 手册
ALTER TABLE tabname ALTER COLUMN colname TYPE typename