Đ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>
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ì. –
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;) –