在DB2中删除XML列

问题描述 投票:0回答:1

我试图用以下方式在db2中删除一个XML列。但每次我这样做时,都会产生一个错误信息

create table One(name int, address XML);
alter table One add column age xml;
alter table One drop column age;

Error starting at line : 5 in command -
alter table One drop column age
Error report -
DB2 SQL Error: SQLCODE=-1242, SQLSTATE=42997, SQLERRMC=7, DRIVER=4.11.77

DB2的官方文档表明,这个问题在DB 9.7中得到了修复。我目前正在检查10.5 & 11.5版本,但仍然面临同样的问题。https:/www.ibm.comsupportknowledgecenterenSSEPEK_11.0.0xmlsrctpcdb2z_alterxml.html。

DB2文档建议在重新组织后对表运行CHECK pending status,但没有可用的命令。

有没有办法解决这个XML数据类型的丢列问题?或者DB2默认不允许在表中删除XML列?

谁能对这个问题提出建议?

https:/www.ibm.comsupportknowledgecenterSSEPGG_9.7.0com.ibm.db2.luw.wn.docdocc0055038.html

https:/www.ibm.comsupportknowledgecenterSSEPGG_11.5.0com.ibm.db2.luw.messages.sql.doccom.ibm.db2.luw.messages.sql.doc-gentopic5.html#sql1242n

IBM建议在一个表中的所有XML列都需要在一条alter语句中删除。在10.5 & 更高版本的db2中,这还是一个限制吗?

sql db2 db2-luw db2-9.7
1个回答
1
投票

这在Db2-LinuxUnixWindows中仍然是一个限制,直到并包括Db2 v11.5。

IBM指出(在SQL1242N原因代码7的帮助中)

"对于包含多列数据类型为XML的表,要么不删除任何XML列,要么使用一条ALTER TABLE语句删除表中所有XML列。

"

这个限制只适用于带有 不止一个 XML列。

你可以通过各种方式来变通,例如创建一个新的表,并将现有的数据复制到其中等等,或者以不同的方式安排你的物理数据模型。

© www.soinside.com 2019 - 2024. All rights reserved.