相关疑难解决方法(0)

有没有办法禁用更新/删除但仍然允许触发器执行它们?

基本上,我希望能够用REVOKE命令禁用UPDATEDELETE,但我还是想在桌子上的触发器来更新我行.

我的触发器对新插入的行执行,并更新特定字段.所以我仍然想要这种行为,但不会被禁用REVOKE或使用RULE.(我看了一篇SO帖子)

有没有办法继续使用UPDATE/ INSERT命令TRIGGERS但禁用其余的命令?

postgresql privileges triggers

6
推荐指数
1
解决办法
2940
查看次数

如何以编程方式检查行是否可删除?

假设我们有一个像这样的PostgreSQL表:

CREATE TABLE master (
    id INT PRIMARY KEY,
    ...
);
Run Code Online (Sandbox Code Playgroud)

以及使用外键引用它的许多其他表:

CREATE TABLE other (
    id INT PRIMARY KEY,
    id_master INT NOT NULL,
    ...
    CONSTRAINT other_id_master_fkey FOREIGN KEY (id_master)
                                    REFERENCES master (id) ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)

有没有办法检查(从触发器功能内)主行是否可删除而不实际尝试删除它?显而易见的方法是逐个对所有引用表执行SELECT,但我想知道是否有更简单的方法.

我需要这个的原因是我有一个包含分层数据的表,其中任何行都可以有子行,并且只有层次结构中最低的子行可以被其他表引用.因此,当一行即将成为父行时,我需要检查它是否已在任何地方引用.如果是,则它不能成为父行,并且拒绝插入新的子行.

sql postgresql database-design plpgsql sql-delete

5
推荐指数
1
解决办法
1977
查看次数