2012-01-12 22 views
5

enter image description hereoracle table_privileges values ​​

Có ai biết giá trị được đưa ra trong table_privileges không? Tôi đã tìm ra "A" nghĩa là gì. Nhưng tôi không tìm ra chữ "S" là gì. Tôi nghĩ rằng đây không phải là tài liệu. Nó có một cái gì đó để làm với các đặc quyền cập nhật trên các cột cụ thể.

+4

Có lý do nào bạn cần sử dụng chế độ xem 'table_privileges' không? Nó sẽ phổ biến hơn nhiều khi sử dụng 'dba_tab_privs' (hoặc' all_tab_privs ') và 'role_tab_privs' để kiểm tra các đặc quyền mức bảng. Tôi tin rằng 'table_privileges' có phần được chỉ định trong chuẩn SQL nên có lẽ bạn đang cố gắng để có được mức độ độc lập về cơ sở dữ liệu nhưng nhìn vào tài liệu cho khung nhìn' table_privileges' trong các cơ sở dữ liệu khác nhau, nó không xuất hiện là tập các cột là như nhau trên các nhà cung cấp cơ sở dữ liệu vì vậy tôi không chắc chắn nó mua cho bạn bất cứ điều gì. –

+0

không có tôi chỉ vấp trên một tuyên bố bằng cách sử dụng table_privileges. cảm ơn vì lời khuyên;) –

Trả lời

3

Điều bạn đang thiếu là chúng tôi có thể cấp UPDATE trên một tập con của các cột trong bảng.

Trước hết, hãy chỉ cấp SELECT trên bảng. Giá trị của UPDATE_PRIV là 'N', ví Không:

SQL> grant select on t23 to mr_x; 

Grant succeeded. 


SQL> select select_priv, update_priv 
    2 from table_privileges 
    3 where table_name = 'T23' 
    4/

S U 
- - 
Y N 

SQL> 

Bây giờ, nếu tôi cấp UPDATE trên một cột duy nhất giá trị của UPDATE_PRIV là 'S', có lẽ cho Một số:

SQL> grant update (col2) on t23 to mr_x 
    2/

Grant succeeded. 

SQL> select select_priv, update_priv 
    2 from table_privileges 
    3 where table_name = 'T23' 
    4/

S U 
- - 
Y S 

SQL> 

Cuối cùng, tôi cấp CẬP NHẬT trên toàn bộ bảng giá trị của UPDATE_PRIV là 'A', cho Tất cả:

SQL> grant update on t23 to mr_x 
    2/

Grant succeeded. 

SQL> select select_priv, update_priv 
    2 from table_privileges 
    3 where table_name = 'T23' 
    4/

S U 
- - 
Y A 

SQL> 
+0

rất hay! cảm ơn bạn! –

4

Tôi xin lỗi nhưng đã nhận thấy an answer rằng @JustinCave đã đưa ra câu hỏi này vào năm 2005, tôi phải đăng nó.

Từ các tài liệu SQL Reference trên table_privileges

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2486.htm#1318903

"TABLE_PRIVILEGES chứa thông tin về các khoản tài trợ trên các đối tượng mà người sử dụng là người chuyển nhượng, người được cấp, hoặc chủ sở hữu hoặc công là người được cấp. Chế độ xem này được bao gồm để tương thích với phiên bản Oracle 6. Oracle Tổng công ty khuyên bạn không nên sử dụng chế độ xem này. "

Do Oracle khuyên bạn không nên sử dụng chế độ xem này, tôi mạnh mẽ khuyên bạn nên sử dụng chế độ xem DBA_TAB_PRIVS thay thế. Thông tin sẽ dễ giải mã hơn một chút.

+0

Rất dễ tìm. Ít nhất Justin trong năm 2012 là phù hợp với tự trẻ hơn của mình! – APC

+0

@Ben - Quá xấu bản thân trẻ dường như có Google Fu tốt hơn. Tôi đã cố gắng tìm một tham chiếu đến 'TABLE_PRIVILEGES' trong tài liệu trước đó ngày hôm nay và gần như không thành công như tôi đã 7 năm trước. –

+0

@JustinCave, Google Fu của bạn có thể đang suy yếu nhưng dường như ngày của tôi Fu có nhiều vấn đề hơn. Tôi đã chỉnh sửa câu trả lời này là, như bạn chỉ ra bài viết ban đầu của bạn là 6 năm sau hơn tôi ban đầu đã nêu ... doh! – Ben

Các vấn đề liên quan