2016-11-16 28 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方案中的表格,並在其他方案中查找數據。感謝您的時間