IM停留在呼籲一個觸發一個SELECT CASE內部存儲過程中的SELECT CASE內部存儲過程,它gaves我下面的錯誤:MYSQL調用上觸發
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'empata(NEW.eqvis))
WHEN 'loc' THEN pierde(NEW.eqvis)
WHEN 'vis' THEN g' at line 16
下面是代碼:
DELIMITER |
CREATE TRIGGER updpartido AFTER UPDATE ON partidos
FOR EACH ROW
BEGIN
SET @vgls = vgoles(NEW.eqvis);
SET @lgls = vgoles(NEW.eqloc);
SET @vglsec = vgolesec(NEW.eqvis);
SET @lglsec = vgolesec(NEW.eqloc);
SELECT CASE
WHEN @[email protected] THEN "emp"
WHEN @vgls>@lgls THEN "loc"
WHEN @vgls<@lgls THEN "vis"
END
INTO @st;
SELECT CASE @st
WHEN 'emp' THEN CALL empata(NEW.eqvis)
WHEN 'loc' THEN CALL pierde(NEW.eqvis)
WHEN 'vis' THEN CALL gana(NEW.eqvis)
END
INTO @dat;
SELECT CASE @st
WHEN 'emp' THEN CALL empata(NEW.eqloc)
WHEN 'vis' THEN CALL pierde(NEW.eqloc)
WHEN 'loc' THEN CALL gana(NEW.eqloc)
END
INTO @dat2;
UPDATE equipos SET [email protected],[email protected] WHERE id=NEW.eqvis;
UPDATE equipos SET [email protected],[email protected] WHERE id=NEW.eqloc;
END;
|
但是,如果我刪除了「CALL」觸發器添加,但是當我做一些更新時,它給了我「功能找不到」的錯誤,因爲我把它們作爲存儲過程,而不是作爲函數,因爲我不會返回什麼...
任何幫助非常感謝!
它有點混亂,我想要做的是一個觸發器,如果一個球隊比另一個球員有更多的得分,它增加了一個勝利,併爲其他球員輸了,還增加了一場比賽 –
我讓它工作只是改變功能:) –
這很容易,所以爲什麼你需要調用另一個存儲過程來做到這一點?你爲什麼在'select ...'之後插入@ dat'? – Icarus