You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/operations/postgresql/postgresql.md
+46-4Lines changed: 46 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -327,7 +327,7 @@ Objects owner Role
327
327
```sql
328
328
CREATE ROLE <objects_owner> WITH
329
329
NOLOGIN
330
-
NOSUPERUSER
330
+
NOSUPERUSERnew_owner
331
331
NOCREATEDB
332
332
NOCREATEROLE
333
333
INHERIT
@@ -408,9 +408,51 @@ GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA <schema_name>
408
408
Ownership Assignment
409
409
410
410
```sql
411
-
ALTER DATABASE <> OWNER TO db_owner_<>;
412
-
ALTER SCHEMA <schema_name> OWNER TO devops;
413
-
ALTER TABLE <table_name> OWNER TO devops;
411
+
ALTER DATABASE <database_name> OWNER TO <database_owner>;
412
+
ALTER SCHEMA <schema_name> OWNER TO <objects_owner>;
413
+
DO $$
414
+
DECLARE
415
+
r RECORD;
416
+
BEGIN
417
+
FOR r IN (SELECT table_name FROM information_schema.tables WHERE table_schema = '<schema_name>')
418
+
LOOP
419
+
EXECUTE format('ALTER TABLE <schema_name>.%I OWNER TO <objects_owner>', r.table_name);
420
+
END LOOP;
421
+
END
422
+
$$;
423
+
424
+
DO $$
425
+
DECLARE
426
+
r RECORD;
427
+
BEGIN
428
+
FOR r IN (SELECT c.relname, n.nspname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace where c.relkind = 'S' AND n.nspname = '<schema_name>')
429
+
LOOP
430
+
EXECUTE format('ALTER SEQUENCE <schema_name>.%I OWNER TO <objects_owner>', r.relname);
431
+
END LOOP;
432
+
END
433
+
$$;
434
+
435
+
DO $$
436
+
DECLARE
437
+
r RECORD;
438
+
BEGIN
439
+
FOR r IN (SELECT viewname FROM pg_views WHERE schemaname = '<schema_name>')
440
+
LOOP
441
+
EXECUTE format('ALTER VIEW <schema_name>.%I OWNER TO <objects_owner', r.viewname);
442
+
END LOOP;
443
+
END
444
+
$$;
445
+
446
+
DO $$
447
+
DECLARE
448
+
r RECORD;
449
+
BEGIN
450
+
FOR r IN (SELECT proname FROM pg_proc WHERE pronamespace = '<schema_name>'::regnamespace)
451
+
LOOP
452
+
EXECUTE format('ALTER FUNCTION <schema_name>.%I OWNER TO new_owner', r.proname);
0 commit comments