dsn*_*guy 4 postgresql trigger
如何防止给定表中任何记录的更新,但允许插入,我已经创建了一个阻止更新的触发器,但我发现它也阻止插入。
编辑
我可以从数据库本身插入新行/记录,但不能从连接到该数据库的应用程序的新记录的表单中插入新行/记录,提交表单后,正在执行触发器。
它是一个使用 Django 构建的 Web 应用程序。
触发功能
CREATE OR REPLACE FUNCTION prevent_updte()
RETURNS trigger AS
$BODY$
BEGIN
RAISE EXCEPTION 'Data modification not allowed';
END;
$BODY$
LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)
扳机
CREATE Trigger prevent_update
BEFORE UPDATE ON purchases_purchase
FOR EACH ROW
EXECUTE PROCEDURE prevent_update();
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE TEST (ID int, NAME text);
REVOKE ALL ON TABLE TEST FROM CURRENT_USER;
GRANT INSERT ON TABLE TEST TO CURRENT_USER;
GRANT SELECT ON TABLE TEST TO CURRENT_USER;
Run Code Online (Sandbox Code Playgroud)
INSERT INTO TEST VALUES (1, 'NAME 1'),(2, 'NAME 2');
Run Code Online (Sandbox Code Playgroud)
UPDATE TEST SET NAME='NAME 3' WHERE ID = 1;
ERROR: permission denied for table test
Run Code Online (Sandbox Code Playgroud)
db<>在这里摆弄
归档时间: |
|
查看次数: |
6949 次 |
最近记录: |