我正在尝试构建触发器,问题是它无法正常工作。我有语法问题。我需要构建一个触发器,它将在表更新之前用同一个表中的另一个记录更新表。下面的触发器描述了我想要做的但是它不起作用。
insert into Envato_CustomConfig_job_sent
values ( NULL , '37', 'email', now());
DELETE FROM Envato_CustomConfig_job_queue
WHERE Job_ID = '37'
AND email ='email';
UPDATE envato_customconfig_job_status SET `email_Sent_Count`= email_Sent_Count+1
WHERE Job_ID = '37';
编辑:
为什么我的查询还附加其他记录?.... 所以基本上它正在工作,但是在更新中添加一个到db的最后一条记录。我试过LIMIT它没用。任何想法。
this.context.Attach(device);
this.context.Entry(device).State = EntityState.Modified;
this.context.SaveChangesAsync();
答案 0 :(得分:1)
触发器,事件,函数和存储过程驻留在存储在特定数据库中的代码中。只有部分参数传递(例如函数和存储过程)。其他人只是自己的(事件和触发器)。
您尝试执行的操作是使用PHP变量信息执行delete
,这只是一个查询。
至少你已经确定了 DELIMITER 这个概念,这可以作为一个容易吸引很多人的微不足道的错误。但是如果你有突出显示触发器块,你会看到语法错误突出显示,很可能是围绕嵌入式WHERE Job_ID = '.$value['Job_ID'].'
块。并且由于触发器在诸如插入等触发事件上运行,因此它不会知道该块。
当我说突出显示时,我的意思是在诸如Mysql Workbench之类的程序中。