sql - 触发器以防止在 postgresql 中更新

标签 sql postgresql triggers cascade

我想创建一个触发器,如果​​该条目也出现在另一个表中,它将阻止对该表的行进行更新。

例子

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

最佳答案

您必须创建触发器 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)并在这种情况下抛出异常。

关于sql - 触发器以防止在 postgresql 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44718347/

相关文章:

sql - 查询性能改进——排序过滤器

javascript - jQuery:在 onclick 之前触发焦点以获取 Ajax 建议

mysql - 插入重复键 - 跳过自动递增 ID

sql - PostgreSQL : Achieve check constraint on aggregated SUM

mysql - 规范化为 3nf 和函数依赖二

ruby-on-rails - 如何从 Rails 控制台列出 postgres 中的模式?

oracle - 指定后语句时如何检查 :new value in compound triggers,?

javascript - 模拟真实的鼠标点击

python - SQLAlchemy 查询返回 None

sql - 比较两个不同表中的列