如果MySQL触发器中有多个if语句,那么最佳方法是什么?
目前,我的SQL如下所示:
IF NOT (NEW.status <=> OLD.status) THEN
{my sql}
ELSEIF NOT (NEW.actual <=> OLD.actual) THEN
{my sql}
END IF
乍看之下,这似乎行得通。但是,我注意到,当多个(else)if语句为true时,仅第一个语句被执行(例如,就像在PHP中一样)。
我如何只使用多个if,而不必是elseif,以便执行多于1条语句?用相同的动作创建多个触发器是不可能的,至少phpMyAdmin所示。将多个if置于一个触发器中会导致错误。
弄清楚了。我没有使用phpMyAdmin中的可视GUI创建触发器,而是使用了普通SQL。
所以我用了这个SQL:
delimiter //
create t1
after update
on my_table
for each row
begin
IF (NEW.status <> OLD.status) THEN
{your sql}
END IF;
IF (NEW.actual <> OLD.actual) THEN
{your sql}
END IF;
end;//
delimiter ;
哪个工作正常。在phpMyAdmin GUI中查找触发器时,我注意到这是因为begin
和end;
必须添加的原因。
有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。
问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄
我有一个脚本,当只有某些工作表打开时,我想在打开时运行它,但在绑定脚本的电子表格中没有其他工作表。所需的所有工作表的名称都为“代理报告-‘NameOfAgent’”。每个代理报告中还包含某些单元格,可用于IF条件语句。从逻辑上讲,我希望: 如果活动工作表的名称包含“代理报告”- 或者,如果处于活动工作表单元格A2==“角色”- 谢谢你的帮助。
问题内容: 我想在一个if语句中解开两个可选变量,但是编译器抱怨在使用密码常量的运算符之后期望的表达式。可能是什么原因? 在Swift中完成。 问题答案: 好消息。 Swift 1.2 (XCode 6.3 Beta,15/2/9发布)现在支持在一行中展开多个可选组件。 不再需要元组/开关模式匹配。实际上,它与您最初建议的语法非常接近(感谢您的收听,Apple!) 另一件事是您还可以添加“保护条件
问题内容: 我有一些话题要讨论。我有一个24 s / s的代码片段。是我自己的类,表示类似于的功能。 这是一段代码: 从可读性的角度来看,我有些担心。将其更改为24类并使用多态性更好吗?我不相信这将使我的代码可维护…一方面,这些s很清楚,应该很容易理解,另一方面,s太多了。 我的问题相当笼统,但是我正在用Python编写代码,所以我不能使用。 你怎么看? 更新 : 重要的一点是,并且是构造函数,我
我有一些话题要讨论。我有一个24s/s的代码片段。是我自己的类,它表示类似于的功能。 这是一段代码: 我从可读性的角度考虑。是否最好将其更改为24个类并使用多态性?我不相信它会使我的代码可维护。。。一方面,那些if很清楚,应该不难理解,另一方面,if太多了。 我的问题相当笼统,但是我用Python编写代码,所以我不能使用像switch这样的构造。 你觉得呢? 更新: 一件重要的事情是、和是构造函数