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

Làm cách nào để thay đổi quyền sở hữu của một số bảng bên trong cơ sở dữ liệu từ postgres sang người dùng khác?

Bạn đã thử với anonymous code block chưa ? Khối mã này bên dưới chọn tất cả các bảng từ giản đồ public thuộc về người dùng postgres và đặt quyền sở hữu cho người dùng user :

DO $$
DECLARE row RECORD;
BEGIN
 FOR row IN SELECT * FROM pg_tables 
            WHERE schemaname = 'public' AND tableowner = 'postgres' LOOP 
  EXECUTE FORMAT('ALTER TABLE %I.%I OWNER TO user',row.schemaname,row.tablename);
 END LOOP;
END; 
$$;

Hãy nhớ rằng thao tác này sẽ sửa đổi quyền sở hữu của tất cả các bảng trong lược đồ của bạn thuộc về người dùng nhất định. Rõ ràng là bạn có thể lọc thêm các bảng này bằng cách thay đổi pg_tables truy vấn trong vòng lặp. Hãy xem:

SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';

Sử dụng nó một cách cẩn thận!

CHỈNH SỬA :Để lọc ra một vài bảng từ lựa chọn ở trên, hãy thêm NOT IN , chẳng hạn như:

SELECT * FROM pg_tables 
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với Postgresql DB trong khuôn khổ Play

  2. Mảng trống làm giá trị mặc định của cột mảng PostgreSQL

  3. Làm cách nào để nhập CSV vào postgresql đã được gán ID?

  4. Cột nào cho khóa ngoại:id hoặc bất kỳ cột nào khác và tại sao?

  5. IntegrityError:phân biệt giữa ràng buộc duy nhất và không vi phạm rỗng