0
我有在phpMyAdmin創建,就像一個觸發器:的Mysql#1235錯誤代碼,當創建2個觸發器不同用途
BEGIN
UPDATE bands SET
bands.status = "active"
where bands.id IN(
SELECT * FROM
(select bands.id
from bands where bands.id IN
(select bandId from invites join bands
on(invites.bandId = bands.id)
where invites.status="approved"
group by bandId having count(invites.status)=bands.total_personel))AS X);
end
該觸發器將改變我的樂隊爲活動狀態。
但是我想自動更改狀態爲「不活動」,如果它不符合where子句。
如果我創建另一個觸發條件:
BEGIN
UPDATE bands SET
bands.status = "inactive"
where bands.id IN(
SELECT * FROM
(select bands.id
from bands where bands.id IN
(select bandId from invites join bands
on(invites.bandId < bands.id)
where invites.status="approved"
group by bandId having count(invites.status)=bands.total_personel))AS X);
end
MySQL允許我#1235錯誤代碼。
我該如何解決這個問題?還是有辦法在一個觸發器中結合這些目的?
我相信你在這個觸發器中犯了一個錯誤,你會在稍後發現,一旦你有更多的數據。您正在更新與「更新觸發觸發器」的行無關的「波段」中的行。 MySQL中的觸發器每行觸發一次*,並且該行可作爲稱爲NEW和OLD的特殊僞表訪問。你應該可以在NEW.bandId上匹配。否則這個觸發器會隨着時間的推移變慢 –