Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function DELETE-CASCADE上的Postgres是否会触发后续表上的DELETE触发器?_Function_Postgresql_Triggers - Fatal编程技术网

Function DELETE-CASCADE上的Postgres是否会触发后续表上的DELETE触发器?

Function DELETE-CASCADE上的Postgres是否会触发后续表上的DELETE触发器?,function,postgresql,triggers,Function,Postgresql,Triggers,在后续的表上,删除级联会触发删除触发器吗 我有三个表:results、m_int和row count。M_int与带有FK的结果相关。结果在DELETE CASCADE集合上具有,并且m_int在DELETE之前具有触发器。Rowcount跟踪m_int中使用了多少行以及由哪个用户使用 我的问题是,当我从结果中删除一行时,我希望删除级联在m_int上触发触发器。有什么想法吗?我花了一上午的时间阅读文档,却找不到答案 peri=> \d results

在后续的表上,删除级联会触发删除触发器吗

我有三个表:results、m_int和row count。M_int与带有FK的结果相关。结果在DELETE CASCADE集合上具有,并且m_int在DELETE之前具有触发器。Rowcount跟踪m_int中使用了多少行以及由哪个用户使用

我的问题是,当我从结果中删除一行时,我希望删除级联在m_int上触发触发器。有什么想法吗?我花了一上午的时间阅读文档,却找不到答案

peri=> \d results
                          Table "public.results"
  Column   |  Type   |                      Modifiers                      
-----------+---------+-----------------------------------------------------
 result_id | integer | not null default nextval('result_id_seq'::regclass)
 trial__id | integer | not null
 title     | text    | 
Indexes:
    "results_pkey" PRIMARY KEY, btree (result_id)
Referenced by:
    TABLE "m_int" CONSTRAINT "m_int_result__id_fkey" FOREIGN KEY (result__id) REFERENCES results(result_id) ON DELETE CASCADE

peri=> \d m_int
                               Table "public.m_int"
   Column   |  Type   |                         Modifiers                          
------------+---------+------------------------------------------------------------
 metric__id | integer | not null
 result__id | integer | not null
 value      | integer | not null
 m_value_id | bigint  | not null default nextval('m_int_m_value_id_seq'::regclass)
Indexes:
    "m_int_pkey" PRIMARY KEY, btree (m_value_id)
Foreign-key constraints:
    "m_int_metric__id_fkey" FOREIGN KEY (metric__id) REFERENCES metrics(metric_id) ON DELETE CASCADE
    "m_int_result__id_fkey" FOREIGN KEY (result__id) REFERENCES results(result_id) ON DELETE CASCADE
Triggers:
    addrows_m_int AFTER INSERT ON m_int FOR EACH ROW EXECUTE PROCEDURE add_rows_m_int()
    remrows_m_int BEFORE DELETE ON m_int FOR EACH ROW EXECUTE PROCEDURE rem_rows_m_int()

peri=> \d rowcount
     Table "public.rowcount"
   Column   |  Type   | Modifiers 
------------+---------+-----------
 user__id   | integer | not null
 table_name | text    | not null
 total_rows | bigint  | 
Indexes:
    "rowcount_pkey" PRIMARY KEY, btree (user__id, table_name)
的手册将告诉您:

此外,当引用列中的数据发生更改时,将对此表列中的数据执行某些操作。ON DELETE子句指定删除被引用表中的被引用行时要执行的操作。[……]

因此,是的,在
results
中删除也将在
muint
中删除。 当然,这并不意味着在
m_int
中删除会删除
结果中的任何内容。

以及你的额外触发器<代码> AddiyRoSsMyIt和<代码> ReMyRoSsMyIt/<代码>做或阻止-我们不知道。

如果触发不是FiffDI,我会认为它是一个大错误。我的触发器需要一个旧的.m_value_id,它存在于m_int表中,但不存在于results表中。将删除发送到结果时,级联删除将没有旧的.m_值_id,因此触发器将无法工作。它可能会开火,但我没有结果。我将尝试用另一种方法来减少我的行数表。一个没有名字的马,有趣的是,今天我读了关于MySQL的以下内容:“MySQL触发器也不会被级联更新和删除激活,即使是由SQL语句引起的(这是违反标准的)”@strkol:MySQL有很多功能已经被破坏或者从未完全实现过。将MySQL作为关系DBMS如何工作的参考是一个坏主意。与其显示表定义,不如向我们显示触发器定义。我猜你的扳机出了错误。