首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EMC Documentum DQL -如何删除重复属性

EMC Documentum DQL -如何删除重复属性
EN

Stack Overflow用户
提问于 2015-01-07 15:39:13
回答 2查看 9.1K关注 0票数 2

我在我的数据库上创建了几个对象,我需要删除一些与它们相关的重复属性。我试图运行的查询是:

代码语言:javascript
运行
复制
UPDATE gemp1_product objects REMOVE ingredients[1] WHERE (r_object_id = '08015abd8002cd68')

但我得到的只是一条跟踪错误信息:

数据库查询错误。DM_QUERY_E_UPDATE_INDEXerror:“更新:无法删除索引1中的tghe属性成分。”DM_OBJECT_W_DELETE_ATTR_POSITION_ERRORwarning:“尝试删除不存在的属性88”

对象08015abd8002cd68存在,我可以在数据库中看到它。像SELECT和DELETE这样的查询可以正常工作,但是我不想删除整个对象。

EN

回答 2

Stack Overflow用户

发布于 2015-01-07 16:09:08

要做到这一点没有简单的办法。原因是对重复属性进行排序,以便为给定对象同步多个重复属性。

任一

  1. 为给定位置设置属性值为空,并更改代码以丢弃空属性,或
  2. 使用多个DQL语句对顺序进行洗牌,使最后一个命令变为空,或
  3. 更改您的数据模型,例如使用单个属性作为带有预定义分隔符的属性包。

细节(1)

代码语言:javascript
运行
复制
UPDATE gemp1_product OBJECTS SET ingredients[1] = '' WHERE ...

详细信息(2)

对于每个索引,首先查找index+1的值:

代码语言:javascript
运行
复制
SELECT ingredients
FROM gemp1_product
WHERE (i_position*-1)-1 = <index+1>
ENABLE (ROW_BASED)

在新查询中使用该值:

代码语言:javascript
运行
复制
UPDATE gemp1_product OBJECTS SET ingredients[1] = '<value_from_above>' WHERE ...

通过嵌套DQL也可以做到这一点,但这可能不值得付出努力。

票数 1
EN

Stack Overflow用户

发布于 2015-01-08 00:35:02

查询或存储库有问题。我认为您在更新查询中键入了属性名或使用了错误的索引。如果你在谷歌上搜索DM_OBJECT_W_DELETE_ATTR_POSITION_ERROR,你会在此链接上看到更详细的解释:

原因:程序执行DeleteAttr操作,指定不存在的属性位置(负数或大于对象中属性数的数字)。

由此,您可以猜测类型不是处于一致状态,或者您试图删除重复属性的太大索引,等等。您是否使用一致性检查器Job和其他类似的作业检查了您的存储库?

对于使用DQL查询删除重复属性值(sttribute),这在单个查询中是无法实现的,因为您需要指定一开始不知道的索引位置。但是,如果要删除的值不多,则编写一个简单的脚本或手动执行它就是您想要的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27823031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档