[英]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.