我正在開始在我的db結構中使用觸發器。 我必須把桌子稱爲父母和孩子。 觸發器在插入到cild表後調用。 位刀片式語句MySQL觸發更新INSERT IGNORE INTO SELECT使用的parent_table的計數器
INSERT IGNORE INTO child (parent_id)
SELECT
id
FROM parent
WHERE somecondition = 1
在後INSERT觸發器子表的語句是:
UPDATE parent SET derivate_count = derivate_count + 1;
父表上更新或別的東西沒有觸發,我收到了錯誤: SQL Fehler(1442):無法更新存儲的函數/觸發器中的表'父',因爲它已被調用此存儲函數/觸發器的語句使用。
我會明白,如果我強制在父表上的相同事件會發生此錯誤 - 這怎麼能解決?
親切的問候,
多米尼克
不是一個答案,但你指望父母有多少個孩子?因爲是這樣的,孩子有一個parent_id,所以有了正確的索引,只需要計算兩個表的連接而不是使用觸發器就可以快速閃爍。 – Nanne
我在父表中有近500k行,並且derivate_count是經常需要的...在每次調用時計算它,我需要它減慢查詢下來就像地獄:) –
它不應該。如果你有一個索引,它會花費大約「log(n)」檢查(這有點超過5)。應該幾乎沒有時間。你真的應該試着解決這個問題,而不是用觸發器去做! – Nanne