簡體   English   中英

“在每個語句后為每一行插入觸發器”可以將索引與新添加的值一起使用嗎?

[英]Can “Insert Trigger For Each Row After Each Statement” use index with the newly added values?

我正在使用Postgres 9.3。 我剛剛將觸發器添加到表中。 這是一個插入后觸發器,在每個語句之后針對每一行執行。 我對觸發函數進行了編碼,並假設同一表的索引包含新添加的行。 如果不是這樣,大量插入將大大降低速度。 我在Google上搜索了一下,但找不到答案。

因此,總結一下我的問題是在語句之​​后,在Postgres 9.3中“在每個語句之后插入觸發器之后”還是在索引之前或之后更新索引?

這是我使用的觸發器定義:

CREATE TRIGGER trigger_name
AFTER INSERT OR UPDATE
ON table_name
FOR EACH STATEMENT
EXECUTE PROCEDURE trigger_funtion();

AFTER觸發器FOR EACH ROW將在表中看到該行。 為了使此操作可靠地發生,必須已將該行添加到任何索引中。 因此索引已更新。

但是,如果嘗試修改導致在AFTER觸發器內觸發AFTER觸發器的表,通常會導致無限循環和錯誤。 這很少是正確的事情。

通常,當您嘗試執行此操作時,實際上需要一個BEFORE觸發器來在保存行之前對其進行修改。

如果您需要修改同一表中的其他行,通常會提示數據模型問題。 如果曾經修改過另一行,則很少需要使用觸發器來修改表中的一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM