Bài viết này sẽ mô tả cách sử dụng lệnh DROP OWNED để xóa tất cả các đối tượng cơ sở dữ liệu thuộc sở hữu của một role cụ thể.
Lệnh DROP OWNED được sử dụng khi bạn muốn xóa các đối tượng thuộc sở hữu của role trước khi xóa role đó.
Cú pháp lệnh:
DROP OWNED BY { role_name | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
Xóa các đối tượng thuộc sở hữu của role_name được chỉ định. Nó cũng loại bỏ bất kỳ đặc quyền nào được thêm vào role được chỉ định trong cơ sở dữ liệu hiện tại.
Nếu CASCADE được thêm vào thì các đối tượng phụ thuộc hay liên quan đến role được chỉ định sẽ bị xóa và tất cả các đối tượng phụ thuộc vào các đối tượng bị xóa đó cũng sẽ tự động bị xóa.
Nếu RESTRICT được thêm vào thì việc xóa sẽ bị hủy nếu có các cơ sở dữ liệu khác phụ thuộc vào đối tượng cần xóa. Nếu không được chỉ định rõ ràng, mặc định được coi là có RESTRICT.
Bây giờ sẽ đi vào ví dụ thực tế xem thế nào. Let’s Go!
Hiện trong database mydb có một schema momo được sở hữu bởi role nihongo:
¥dn
Ngoài ra, bảng marketing đã được tạo trong lược đồ public cũng được sở hữu bởi role nihongo:
¥dt
Và đặc quyền r(SELECT) đã được thêm vào role nihongo cho bảng product trong lược đồ public:
¥dp
Bây giờ, chúng ta sẽ xóa các đối tượng thuộc sở hữu của role nihongo trong cơ sở dữ liệu mydb. Thực hiện các lệnh sau khi kết nối như một superuser, chẳng hạn là postgres.
DROP OWNED BY nihongo;
Các đối tượng thuộc sở hữu của role nihongo trong cơ sở dữ liệu mydb đã bị xóa cùng nhau:
[…] thể bạn quan tâm: – Lệnh DROP OWNED xóa tất cả các đối tượng cơ sở dữ liệu thuộc sở hữu của… – Lệnh REASSIGN OWNED thay đổi quyền sở hữu các đối tượng cơ sở dữ […]