Adicionando uma chave estrangeira entre esquemas:
ALTER TABLE "editedArticles"
ADD CONSTRAINT "editedArticles_articles_foreign"
FOREIGN KEY("originalArticleId") REFERENCES "private".articles("id");
falha com:
ERROR: 42501: permission denied for table articles
mesmo após executar com sucesso:
GRANT USAGE ON SCHEMA private TO postgres;
GRANT SELECT, REFERENCES ON TABLE private."articles" TO postgres;
Parece que tenho o mesmo problema perguntado nesta pergunta sem resposta .
Para registro:
SELECT current_user;
retornapostgres
\du+ postgres
retornaCreate role, Create DB, Replication, Bypass RLS
e finalmente:
postgres=> \dn+ private
List of schemas
Name | Owner | Access privileges | Description
---------+----------+---------------------------+-------------
private | postgres | postgres=UC/postgres +|
| | digest=UC/postgres +|
| | supabase_admin=U/postgres |
(1 row)
postgres=> \z private.articles
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
---------+----------+-------+-------------------------------+-------------------+----------
private | articles | table | digest=arwdDxt/digest +| |
| | | supabase_admin=arwdDxt/digest+| |
| | | postgres=r/digest | |
(1 row)
Note que postgres=r/digest
só tem a r
permissão (read) naquela tabela, não as x
(references). Mas por quê? Eu executei GRANT REFERENCES
(como mencionado acima).