PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để CẤP TẤT CẢ QUYỀN RIÊNG TƯ trên TẤT CẢ CÁC CHẾ ĐỘ XEM trong một tuyên bố?

Cách duy nhất để thực hiện điều này trong một câu lệnh (loại) là tạo một hàm, nếu không, bạn đang liệt kê cụ thể tất cả các dạng xem hoặc bạn đang cấp cho tất cả các bảng, sau đó thu hồi các dạng không phải dạng xem.

Tôi đã viết điều này một cách nhanh chóng, nhưng đã thử nghiệm nó. Bạn có thể cần phải điều chỉnh khi cần thiết:

CREATE OR REPLACE FUNCTION fn_grant_all_views(schema_name TEXT, role_name TEXT)
RETURNS VOID AS $func$

DECLARE view_name TEXT;

BEGIN

  FOR view_name IN
    SELECT viewname FROM pg_views WHERE schemaname = schema_name
  LOOP
    EXECUTE 'GRANT ALL PRIVILEGES ON ' || schema_name || '.' || view_name || ' TO ' || role_name || ';';
  END LOOP;

END; $func$ LANGUAGE PLPGSQL

Cách sử dụng:

SELECT fn_grant_all_views('my_schema','my_role');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sau khi khôi phục, chuỗi cơ sở dữ liệu của tôi bị xóa khỏi cột trong Postgresql

  2. Máy chủ có đang chạy trên máy chủ localhost (::1) và chấp nhận kết nối TCP / IP trên cổng 5432 không?

  3. Sử dụng bảng tạm thời để thay thế mệnh đề WHERE IN

  4. Mảng PostgreSQL có thể được tối ưu hóa để tham gia không?

  5. Không thể kết nối với cơ sở dữ liệu Postgres bằng ngăn xếp Bitnami Django