Postgresql 防止更新生成的主键列
在PostgreSQL中,我创建了一个表,其id列定义为serial。我已经插入了两行,但仍然可以更新id列的值 但是我需要阻止id列的生成值的更新Postgresql 防止更新生成的主键列,postgresql,Postgresql,在PostgreSQL中,我创建了一个表,其id列定义为serial。我已经插入了两行,但仍然可以更新id列的值 但是我需要阻止id列的生成值的更新 您可以撤消表上的更新,并在列上授予更新: REVOKE UPDATE ON TABLE aas.apa_testtable FROM some_role; GRANT UPDATE (name) ON TABLE aas.apa_testtable TO some_role; 请记住有关角色公用、超级用户以及您的设置中可能存在的其他继承问题 --
您可以撤消表上的更新,并在列上授予更新:
REVOKE UPDATE ON TABLE aas.apa_testtable FROM some_role;
GRANT UPDATE (name) ON TABLE aas.apa_testtable TO some_role;
请记住有关角色公用、超级用户以及您的设置中可能存在的其他继承问题
--Do not try this, it will not work without revoking table level privileges:
REVOKE UPDATE (id) ON TABLE aas.apa_testtable FROM some_role;
另一种方法是创建触发器,该触发器将检查是否为旧的!=新增,但提供了详细信息,我认为没有必要使用它。如果您不想更改id值,那么为什么要运行更新?我需要列为唯一列,标识列为静态列,这意味着插入后无法更改列。
--Do not try this, it will not work without revoking table level privileges:
REVOKE UPDATE (id) ON TABLE aas.apa_testtable FROM some_role;