【问题标题】:Trigger to prevent update in postgresql触发器以防止在 postgresql 中更新
【发布时间】:2017-06-23 09:49:12
【问题描述】:

我想创建一个触发器,如果​​该条目也存在于另一个表中,它将阻止从该表中更新行。

例子

Table M
m_id   title  
1       abc
2       def
3       ghi

Table N
n_id   m_id
1       2
2       3

因此,如果尝试更新表 m 中的值 2 或 3,则不应允许这样做 而如果我尝试从表中更新值 1,它应该这样做。

【问题讨论】:

    标签: sql postgresql triggers cascade


    【解决方案1】:

    您必须创建一个触发器 BEFORE UPDATE ON m FOR EACH ROW 来检查 IF OLD.m_id <> NEW.m_id AND EXISTS (SELECT 1 FROM n WHERE n.m_id = OLD.m_id) 并在这种情况下引发异常。

    【讨论】:

    • 抱歉回复晚了,但我已经有一个外键约束我想要的是,如果我尝试更新表 N 中存在的表 M 中的条目,那么不应该允许我这样做.
    • 如果可能的话,你能给出最终的查询吗?
    猜你喜欢
    • 2010-10-17
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多