Skip to content

Commit 9ebe3b3

Browse files
committed
add loop for change owner
1 parent 9349f0b commit 9ebe3b3

File tree

1 file changed

+46
-4
lines changed

1 file changed

+46
-4
lines changed

content/operations/postgresql/postgresql.md

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ Objects owner Role
327327
```sql
328328
CREATE ROLE <objects_owner> WITH
329329
NOLOGIN
330-
NOSUPERUSER
330+
NOSUPERUSERnew_owner
331331
NOCREATEDB
332332
NOCREATEROLE
333333
INHERIT
@@ -408,9 +408,51 @@ GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA <schema_name>
408408
Ownership Assignment
409409
410410
```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);
453+
END LOOP;
454+
END
455+
$$;
414456
```
415457
416458
## Functions

0 commit comments

Comments
 (0)