【问题标题】:is it possible to create trigger without execute procedure in postgresql?是否可以在 postgresql 中创建不执行过程的触发器?
【发布时间】:2015-03-24 19:53:47
【问题描述】:

我想在其主体中创建带有 BL 的过程。我在 SQL 中找到了相同的示例,但在 postgresql 中没有。

【问题讨论】:

  • 不,这在 Postgres 中是不可能的(顺便说一句:“SQL 中的示例”是什么意思? - 每个 DBMS 的触发器都不同,“SQL " 只是一种查询语言,不是 DBMS 产品)
  • PostgreSQL 只允许为触发的动作执行用户定义的函数。该标准允许执行许多其他 SQL 命令,例如 CREATE TABLE,作为触发操作。 通过创建执行所需命令的用户定义函数来解决这个限制并不难。 postgresql.org/docs/current/static/sql-createtrigger.html
  • 我的意思是我在 sql 中做了同样的事情,但现在我在 postgresql 中工作,我无法在 postgresql 中做,也找不到这样的例子,这可能吗?
  • 再次:“in SQL”是什么意思? SQL 只是一种查询语言。但底线是:你根本无法在 Postgres 中做到这一点。请参阅手册中的示例:postgresql.org/docs/current/static/plpgsql-trigger.html

标签: java sql postgresql


【解决方案1】:

每个 RDBMS 都有自己的 SQL 语言。您不能在 PostgreSQL 中创建触发器,因为您可以在 Oracle/MS SQL 等中创建触发器。为了在 PostgreSQL 中创建触发器,您必须

  1. 和你一起在 PostgreSQL 中创建一个函数
  2. 创建一个触发器并将您的函数与此触发器相关联。

【讨论】:

    【解决方案2】:

    这是不可能的——PostgreSQL 不支持 SQL 触发器——每个触发器都需要一个相关的触发器函数。其他数据库只支持 SQL 触发器,不支持 PostgreSQL。

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 2018-11-21
      • 2018-09-07
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多