我正在执行此语句,使用phpMyAdmin
在表上创建触发器DELIMITER //
CREATE NEW TRIGGER credit_refs AFTER UPDATE on investments FOR EACH ROW
BEGIN
DECLARE ref INT(20)
DECLARE parent INT(20)
DECLARE suparent INT(20)
SELECT ref,ref_pa,ref_supa INTO ref,parent,suparent FROM users WHERE tid = OLD.tid;
IF(ref != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (ref,OLD.inv,'ref',OLD.tid);
IF(parent != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (parent,OLD.inv,'ref_pa',OLD.tid);
IF(suparent != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (suparent,OLD.inv,'ref_supa',OLD.tid);
END //
DELIMITER ;
这句话看起来不错,但我接到以下
错误
静态分析:
在分析过程中发现了4个错误。
无法识别的声明类型。 (位置253处的“IF”附近)
无法识别的声明类型。 (位置372附近的“IF”)
无法识别的声明类型。 (位置505处的“IF”附近)
无法识别的声明类型。 (位于643位置的“END”附近)
SQL查询:文档
CREATE NEW TRIGGER credit_refs AFTER UPDATE on investments FOR EACH ROW BEGIN DECLARE ref INT(20) DECLARE parent INT(20) DECLARE suparent INT(20) SELECT ref,ref_pa,ref_supa INTO ref,parent,suparent FROM users WHERE tid = OLD.tid; IF(ref != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (ref,OLD.inv,'ref',OLD.tid); IF(parent != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (parent,OLD.inv,'ref_pa',OLD.tid); IF(suparent != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (suparent,OLD.inv,'ref_supa',OLD.tid); END
MySQL说:文档
#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在“每次行的投资更新后”新TRIGGER credit_refs附近使用正确的语法
BEGIN
DECL' at line 1
希望这里有人能够告诉我这里我做错了什么。
答案 0 :(得分:1)
IF周围的警告只是phpmyadmin自己的检查。您获得的语法错误是由NEW
关键字引起的,这是不需要的。根据{{3}}:
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
但是,您的IF未被END IF
关闭,并且您在declare
语句末尾也缺少分号。
答案 1 :(得分:1)
IF
尝试以上查询。
在MySQL中,每个 END IF
语句都必须包含 END IF
。您错过 Selects appropriate worksheet - Non-MyPayFINAL
Sheets("Non-MyPay FINAL").Select
'Selects all data in column A and copies to clipboard
Range("A1", Range("A1").End(xlDown)).Select
Selection.Copy
'Add a new workbook
Workbooks.Add
'Paste selected values from previous sheet
Selection.PasteSpecial Paste:=xlPasteValues
'Build SaveAs file name (for CSV file)
MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV"
'Save template file as...(for CSV file)
ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment
Limited\" & MySaveFile), FileFormat:=xlCSV
'Build SaveAs file name (for Txt file)
MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".Txt"
'Save template file as...(for Txt file)
ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment
Limited\" & MySaveFile), FileFormat:=xlTextWindows
多个if statement。