grant create index on specific table (Programare, Sql, Oracle)

Djaballah DJEDID a intrebat.

Folosesc oracle și vreau să creez un index pe o anumită tabelă aparține unui alt utilizator, deci cum acord privilegiul de a face acest lucru fără a utiliza requete

grant create any index 

Comentarii

  • Nu poți cere proprietarului să creeze indexul? –  > Por jarlh.
  • Nu, a trebuit să creez un index de la un alt utilizator.  > Por Djaballah DJEDID.
3 răspunsuri
mathguy
grant index on [tablename] to [user]

Ce privilegii trebuie să aibă proprietarul tabelului însuși pentru a i se permite să acorde crearea unui index pe un tabel unui alt utilizator va depinde de versiunea dvs. de Oracle; verificați documentația.

Comentarii

  • asta nu a funcționat, am avut mesajul de eroare privilegiu lipsă sau invalid. folosesc oracle 10g –  > Por Djaballah DJEDID.
  • Greșeala mea, am avut o sintaxă greșită. Fixat acum – am șters cuvântul „create”. Vă rog să-mi spuneți dacă funcționează acum. –  > Por mathguy.
Dante Faña Badia

Dacă doriți să creați un index pentru o tabelă dintr-o altă schemă, mai întâi trebuie să acordați privilegiul de sistem utilizatorului pe care doriți să îl utilizați pentru a crea indexul.

Pentru a crea un index într-o altă schemă, trebuie să aveți privilegiul de sistem CREATE ANY INDEX.

Mai multe referințe: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5010.htm

Iată SQL:

/*No tested*/
Grant create any index to user;

Kacper

Crearea unei proceduri în schema proprietarului tabelului

create or replace 
procedure create_index(col_list varchar2, index_name varchar2) as
begin
execute immediate 'create index ' || index_name || ' on ' || 'PUT_TABLENAME_HERE'|| '(' || col_list || ')';
end;

GRANT EXECUTE ON table_owner.create_index TO user;

Se apelează

begin
table_owner.create_index('ID','IDX1');
end;

Cred că ar trebui să funcționeze.

Tags:,