2017-06-23 73 views
0

我想创建一个触发器,它会阻止更新在从表中的一行,如果该条目出现在另一个表了。触发以防止更新PostgreSQL中

例如

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它应该这样做。

回答

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)并引发在这种情况下的例外。

+0

对不起已故的答复,但我已经有我想要的外键约束是,如果我尝试更新从表M中的条目这是目前在表N,则应该不允许我这样做。 –

+0

你能给如果可能的最终查询? –

+0

我做到了。写了最后的触发功能是平凡的,并作为练习留给读者。 –