Preciso revogar os privilégios INSERT e UPDATE na coluna uid na tabela test.persons.
Aqui está o que eu fiz até agora:
CREATE TABLE test.persons (
uid UUID DEFAULT gen_random_uuid() PRIMARY KEY,
name VARCHAR(255),
description TEXT
);
REVOKE INSERT (uid) ON test.persons FROM hasura;
GRANT INSERT (name, description) ON test.persons TO hasura;
REVOKE UPDATE (uid) ON test.persons FROM hasura;
GRANT UPDATE (name, description) ON test.persons TO hasura;
INSERT INTO test.persons (uid, name, description)
VALUES ('e7443661-f6c3-4448-8df7-c65e3f8243ca', 'John Doe', 'Some description');
//correct: ERROR: permission denied for table persons
INSERT INTO test.persons (uid)
VALUES (gen_random_uuid());
//correct: ERROR: permission denied for table persons
INSERT INTO test.persons (name, description)
VALUES ('John Doe', 'Some description');
//correct: Successfully inserted
INSERT INTO test.persons (name)
VALUES ('John Doe1');
//correct: Successfully inserted
Até agora tudo bem.
Mas quando tento executar a seguinte ATUALIZAÇÃO:
UPDATE test.persons SET uid = gen_random_uuid() WHERE name = 'John Doe';
Ele foi atualizado com sucesso, embora não devesse, pois revoguei os privilégios UPDATE na coluna uid.
O que estou fazendo errado e como devo revogar corretamente os privilégios UPDATE na coluna uid?