【问题标题】:#1064 - You have an error in your SQL syntax at line 7#1064 - 第 7 行的 SQL 语法有错误
【发布时间】:2021-05-30 08:41:08
【问题描述】:
enter code here
    DELIMITER $$
DROP TRIGGER IF EXISTS `Update_Status`$$
CREATE TRIGGER `Update_Status` AFTER INSERT ON `occurance_time`
FOR EACH ROW BEGIN 
IF NOT EXISTS (SELECT `F_Seen` FROM `Total_Hours` WHERE (`SSN`=new.`SSN` and `Day_Date`=new.`Day_Date`))
THEN
INSERT INTO `total_time` (`SSN`,`Name`,`Day_Date`,`F_Seen`) VALUES(new.`SSN`,new.`Name`,new.`Day_Date`,new.`Cap_time`);
ELSE
UPDATE `total_time` SET(`L_Seen`=new.`Cap_time`) WHERE (`SSN`=new.`SSN` and `Day_Date`=new.`Day_Date`);
END$$

我已经在插入触发器 On Occurrence _time 后创建了这个我想在 Total_time 表中存储一天的第一次发生时间和一天的最后一次发生时间,但收到此错误 “1064 - 您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,了解在 '(L_Seen=new.Cap_time) WHERE (SSN=new.@ 987654325@ 和 Day_Date=new.`Day_Date...' 在第 7 行" ***

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    请使用SET L_Seen=new.Cap_time,而不是SET(L_Seen=new.Cap_time)。你也错过了end if。下面的代码正在运行。

    CREATE TRIGGER `Update_Status` AFTER INSERT ON `occurance_time`
    FOR EACH ROW 
    BEGIN 
    IF NOT EXISTS (SELECT `F_Seen` FROM `Total_Hours` WHERE `SSN`=new.`SSN` and `Day_Date`=new.`Day_Date`)
    THEN
    INSERT INTO `total_time` (`SSN`,`Name`,`Day_Date`,`F_Seen`) VALUES(new.`SSN`,new.`Name`,new.`Day_Date`,new.`Cap_time`);
    ELSE
    UPDATE `total_time` SET `L_Seen`=new.`Cap_time`  WHERE `SSN`=new.`SSN` and `Day_Date`=new.`Day_Date`;
    end if;
    end
    

    DB-Fiddle:

     create table occurance_time(SSN varchar(50),Name varchar(50),Day_Date date,Cap_time time);
    
     CREATE TRIGGER Update_Status AFTER INSERT ON occurance_time 
     FOR EACH ROW BEGIN 
     IF NOT EXISTS (SELECT F_Seen FROM total_time WHERE SSN=new.SSN and Day_Date=new.Day_Date) 
     THEN
     INSERT INTO total_time (SSN,Name,Day_Date,F_Seen) VALUES(new.SSN,new.Name,new.Day_Date,new.Cap_time); 
     ELSE
     UPDATE total_time SET L_Seen=new.Cap_time WHERE SSN=new.SSN and Day_Date=new.Day_Date; 
     end if; 
     end 
    

    db小提琴here

    【讨论】:

    • #1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 8 行的 '' 附近使用的正确语法
    • 我已经修改了我的答案。它现在正在工作。
    • 我不知道为什么,但它仍然在第 6 行给出语法错误
    • CREATE TRIGGER Update_Status AFTER ONoccurance_time INSERT ON FOR EACH ROW BEGIN IF NOT EXISTS (SELECT F_Seen from total_time WHERE SSN=new.SSN and Day_Date=new.Day_Date) THEN INSERT INTO to total_time (SSN,Name,Day_Date ,F_Seen) 值(new.SSN,new.Name,new.Day_Date,new.Cap_time); ELSE UPDATE total_time SET L_Seen=new.Cap_time WHERE SSN=new.SSN and Day_Date=new.Day_Date;万一;结束
    • 上述代码中不应有任何语法错误。我添加了 db-fiddle 链接。上面的示例中是否缺少查询的任何部分?
    猜你喜欢
    • 2015-09-20
    • 2021-02-16
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    相关资源
    最近更新 更多