【问题标题】:Triggers in postgresqlpostgresql 中的触发器
【发布时间】:2015-09-21 18:48:56
【问题描述】:

我是 PostgreSQL 新手,目前正在研究触发器,但一直卡在某个地方。

我有两张桌子 Student 和 Room。

Room id 是 Room 的主键,Student 的外键。

如果我在 Student 中插入,那么它应该在 Room 中检查新数据是否存在。

这是一个外键检查约束。希望有人能帮帮我

【问题讨论】:

  • 既然已经有了外键约束,为什么还需要触发器?
  • 对不起,我得把外键约束去掉,然后用触发器执行
  • 为什么“必须”删除外键?这比触发器更有效

标签: postgresql


【解决方案1】:

我不知道你的代码,我不明白意思,但我可以大致回答。

在 PostgreSQL 中,触发器通常在两个步骤中定义:

  1. 使用CREATE FUNCTION定义一个触发函数
  2. 使用 CREATE TRIGGER 将此创建的触发器函数绑定到表

触发器函数是一个普通函数,除了它有一个返回值类型trigger(另外,它不带任何参数)。

CREATE OR REPLACE FUNCTION trigger_function() 
  RETURNS trigger 
AS $$ ... $$;

绑定:

CREATE TRIGGER trigger_name 
   AFTER INSERT ON table_name 
   FOR EACH ROW EXECUTE PROCEDURE trigger_function();

另外,也请在PostgreSQL 9.4 Triggers查阅优秀的PG文档

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2010-09-23
    相关资源
    最近更新 更多