[英]MYSQL TRIGGER subquery update
我是使用SQL的新手,我在SQLSERVER中開發了一個運行完美的觸發器,現在我正嘗試將其轉換為可在Mysql中使用,但不起作用,我也不知道該怎么做。
這是代碼:
CREATE TRIGGER tg_test AFTER UPDATE ON YET FOR EACH ROW
INSERT INTO CONTROLETRIGGER(idAluno, idNivel)
values(NEW.IdAluno, NEW.idNivel);
UPDATE HistoricoNivel AS E
join(
select max(h.idNivel) Nivel, h.idAluno
from HistoricoNivel h
join CONTROLETRIGGER v on h.idaluno = v.idaluno
WHERE h.dtFim is null
group by h.idAluno
)X on E.idAluno = X.idAluno and E.idNivel= X.Nivel
join CONTROLETRIGGER vi on vi.idaluno = E.idAluno
set E.dtFim = case when X.idnivel <> vi.idNivel then CURRENT_DATE() else null end
拜托,我做錯了什么?
Tks。
X
子查詢沒有名為idnivel
的字段,因此case語句將不會編譯。
我假設您想要的是nivel
,它將觸發全部觸發;
CREATE TRIGGER tg_test AFTER UPDATE ON YET FOR EACH ROW
INSERT INTO CONTROLETRIGGER(idAluno, idNivel) VALUES (NEW.IdAluno, NEW.idNivel);
UPDATE HistoricoNivel AS E
JOIN(
SELECT MAX(h.idNivel) Nivel, h.idAluno
FROM HistoricoNivel h
JOIN CONTROLETRIGGER v ON h.idaluno = v.idaluno
WHERE h.dtFim IS NULL
GROUP BY h.idAluno
) X
ON E.idAluno = X.idAluno AND E.idNivel= X.Nivel
JOIN CONTROLETRIGGER vi ON vi.idaluno = E.idAluno
SET E.dtFim = CASE WHEN X.nivel <> vi.idNivel THEN CURRENT_DATE() ELSE NULL END
//
看到它在這里編譯 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.