0

我有100多张桌子。用户表就是其中之一。与多个表相关的用户。如果我要删除一个用户,我需要检查其他表中是否存在任何用户表引用。所以我需要获取其他表中存在的外部关系的数量。用户附加将存储在另一个表中。所以参考数超过1,那么我不应该删除。

我在 PostgreSQL 工作。我认为在mysql中是可能的。我不了解 Postgresql,因为我是 PostgreSQL 新手。

提前致谢。

4

2 回答 2

3

当您定义外键时,如果任何其他表仍保留键,您可以为其提供限制删除的选项。这是postgres 手册中的示例

CREATE TABLE order_items (
    product_no integer REFERENCES products ON DELETE RESTRICT,
    order_id integer REFERENCES orders ON DELETE CASCADE,
    quantity integer,
    PRIMARY KEY (product_no, order_id)
);
于 2013-05-10T06:33:57.300 回答
0

将每个删除begin exception放在循环内的块中并使用错误条件 - restrict_violation

    ...
    loop
        begin
            delete ... where id = 1;
        exception
            when restrict_violation then null
        end;
    end loop;

这样一个有外来关系的用户就不会被删除,其他人没有意愿。

于 2013-05-10T07:32:37.297 回答