2016-11-16 29 views
1

考虑以下相关查询:甲骨文使用相关查询模式名称

update CASSETTE.DB_NIM_CABLES a 
set(cgb_a, cgb_z) = 
(
    select regexp_substr(name, '[^ ]+', 1, 1) 
     , regexp_substr(name, '[^ ]+', 1, 1) 
    from CASSETTE.DB_NIM_CABLES b 
    where b.id = a.id 
) where REGEXP_COUNT(a.name, '-') = 1; 

这工作,如果我使用CASSSETTE帐户运行,但不与任何其他。为什么是这样 ?

+0

你会得到什么样的错误?您是否有适当的权限从其他账户更新该表格? – JSapkota

+0

我没有收到错误消息,我看到提示说#行已更新,但是当我查看没有行更新时。我已经分配了适当的权限。 – Steef

+0

您是否正在检查其他登录会话,并且在检查更改之前未提交? –

回答

0

发生这种情况的原因可能是您要运行DML的其他用户(帐户)在该表上没有UPDATE和SELECT权限。 因此,CASSETTE用户应该将权限授予相应的用户。

IE,说你想从OTHERUSER模式运行它,你应该

1连接到DB带录像带USER

2-赋予的权限如下

  grant ALL PRIVILEGES on DB_NIM_CABLES to OTHERUSER ; 

PS我给予所有权限,它应该足以给予SELECT,INSERT,UPDATE。

请参阅此文档,其中介绍了有关OBJECT特权的部分。

https://docs.oracle.com/database/122/DBSEG/configuring-privilege-and-role-authorization.htm#DBSEG99868

0

有重复的表,一个在盒式架构,另一个在GTFIBER。我正在更新GTFIBER方案中的表格,并在其他方案中查找数据。感谢您的时间