Cỳ phỏp cõu lệnh REVOKE sử dụng để thu hồi quyền đó cấp phỏt trờn đối tượng cơ sở dữ liệu cú cỳ phỏp như sau:
REVOKE [GRANT OPTION FOR]
ALL [PRIVILEGES]| cỏc_quyền_cần_thu_hồi
[(danh_sỏch_cột)] ON tờn_bảng | tờn_khung_nhỡn
|ON tờn_bảng | tờn_khung_nhỡn [(danh_sỏch_cột)] |ON tờn_thủ_tục
|ON tờn_hàm
FROM danh_sỏch_người_dựng
[CASCADE]
Cõu lệnh REVOKE cú thể sử dụng để thu hồi một số quyền đó cấp phỏt cho người dựng hoặc là thu hồi tất cả cỏc quyền (ALL PRIVILEGES).
Vớ dụ 4.4: Thu hồi quyền thực thi lệnh INSERT trờn bảng LOP đối với người dựng
thuchanh.
REVOKE INSERT ON lop
FROM thuchanh
Giả sử người dựng thuchanh đó được cấp phỏt quyền xem dữ liệu trờn cỏc cột HODEM, TEN và NGAYSINH của bảng SINHVIEN, cõu lệnh dưới đõy sẽ thu hồi quyền đó cấp phỏt trờn cột NGAYSINH (chỉ cho phộp xem dữ liệu trờn cột HODEM và TEN)
REVOKE SELECT
ON sinhvien(ngaysinh) FROM thuchanh
Khi ta sử dụng cõu lệnh REVOKE để thu hồi quyền trờn một đối tượng cơ sở dữ liờu từ một người dựng nỏo đú, chỉ những quyền mà ta đó cấp phỏt trước đú mới được thu hồi, những quyền mà người dựng này được cho phộp bởi những người dựng khỏc vẫn cũn cú hiệu lực. Núi cỏch khỏc, nếu hai người dựng khỏc nhau cấp phỏt cựng cỏc quyền trờn cựng một đối tượng cơ sở dữ liệu cho một người dựng khỏc, sau đú người thu nhất thu hồi lại quyền đó cấp phỏt thỡ những quyền mà người dựng thứ hai cấp phỏt vẫn cú hiệu lực.
Vớ dụ 4.5: Giả sử trong cơ sở dữ liệu ta cú 3 người dựng là A, B và C. A và B đều cú quyền sử dụng và cấp phỏt quyền trờn bảng R. A thực hiện lệnh sau để cấp phỏt quyền xem dữ liệu trờn bảng R cho C:
GRANT SELECT ON R TO C
và B cấp phỏt quyền xem và bổ sung dữ liệu trờn bảng R cho C bằng cõu lệnh:
GRANT SELECT, INSERT ON R TO C
Như vậy, C cú quyền xem và bổ sung dữ liệu trờn bảng R. Bõy giờ, nếu B thực hiện lệnh:
REVOKE SELECT, INSERT ON R FROM C
Người dựng C sẽ khụng cũn quyền bổ sung dữ liệu trờn bảng R nhưng vẫn cú thể xem được dữ liệu của bảng này (quyền này do A cấp cho C và vẫn cũn hiệu lực).
Nếu ta đó cấp phỏt quyền cho người dựng nào đú bằng cõu lệnh GRANT với tuỳ chọn WITH GRANT OPTION thỡ khi thu hồi quyền bằng cõu lệnh REVOKE phải chỉ định tuỳ chọn CASCADE. Trong trường hợp này, cỏc quyền được chuyển tiếp cho những người dựng khỏc cũng đồng thời được thu hồi.
Vớ dụ 4.6: Ta cấp phỏt cho người dựng A trờn bảng R với cõu lệnh GRANT như sau:
GRANT SELECT ON R TO A
WITH GRANT OPTION
sau đú người dựng A lại cấp phỏt cho người dựng B quyền xem dữ liệu trờn R với cõu lệnh:
GRANT SELECT ON R TO B
Nếu muốn thu hồi quyền đó cấp phỏt cho người dựng A, ta sử dụng cõu lệnh REVOKE như sau:
REVOKE SELECT ON NHANVIEN FROM A CASCADE
Cõu lệnh trờn sẽ đồng thời thu hồi quyền mà A đó cấp cho B và như vậy cả A và B đều khụng thể xem được dữ liệu trờn bảng R.
Trong trường hợp cần thu hồi cỏc quyền đó được chuyển tiếp và khả năng chuyển tiếp cỏc quyền đối với những người đó được cấp phỏt quyền với tuỳ chọn WITH GRANT OPTION, trong cõu lệnh REVOKE ta chỉ định mệnh đề GRANT OPTION FOR.
Vớ dụ 4.7: Trong vớ dụ trờn, nếu ta thay cõu lệnh:
REVOKE SELECT ON NHANVIEN FROM A CASCADE
bởi cõu lệnh:
REVOKE GRANT OPTION FOR SELECT ON NHANVIEN
Thỡ B sẽ khụng cũn quyền xem dữ liệu trờn bảng R đồng thời A khụng thể chuyển tiếp quyền mà ta đó cấp phỏt cho những người dựng khỏc (tuy nhiờn A vẫn cũn quyền xem dữ liệu trờn bảng R).