在MySQL触发器中比较字符串

3

这是我创建的一个触发器,我想将new.utype与给定的employee进行比较,但不知道在MySQL中实际比较的方法..我该怎么做?并且请告诉我条件语法是否正确

delimiter $$

CREATE TRIGGER insdetail_tomaster
AFTER INSERT ON tempdetail
FOR EACH ROW BEGIN
IF(new.utype =='employee') THEN
INSERT INTO master_employee values(new.field1,new.filed2);
ELSE 
INSERT INTO master_manager values(new.field1,new.fiel2);
END $$

DELIMITER ;

请帮帮我,这里有没有人? - Ayush Jain
看起来还不错,除了new.filed2应该是new.field2,而且new通常写成NEW。你面临的确切问题是什么?触发器是否按预期工作? - user3248346
谢谢,问题已经解决了。我使用了strcmp函数进行比较。 - Ayush Jain
2个回答

2

使用以下方式使用“like”关键字:

IF new.utype like 'employee' 

整个触发器看起来像这样
delimiter $$

CREATE TRIGGER insdetail_tomaster
AFTER INSERT ON tempdetail
FOR EACH ROW BEGIN
IF new.utype like 'employee'  THEN
INSERT INTO master_employee values(new.field1,new.filed2);
ELSE 
INSERT INTO master_manager values(new.field1,new.fiel2);
END $$

DELIMITER ;

我假设您写的触发器除字符串比较外都是正确的。谢谢。


0

你需要使用单个的=而不是==

IF new.utype = 'employee' 

DELIMITER $$

CREATE TRIGGER insdetail_tomaster
AFTER INSERT ON tempdetail
FOR EACH ROW BEGIN
  IF new.utype = 'employee' THEN
    INSERT INTO master_employee values(new.field1,new.filed2);
  ELSE 
    INSERT INTO master_manager values(new.field1,new.fiel2);
END $$

DELIMITER ;

你也可以使用 <> 来比较不相等的值。

IF new.utype <> 'employee'

DELIMITER $$

CREATE TRIGGER insdetail_tomaster
AFTER INSERT ON tempdetail
FOR EACH ROW BEGIN
  IF new.utype <> 'employee' THEN
    INSERT INTO master_employee values(new.field1,new.filed2);
  ELSE 
    INSERT INTO master_manager values(new.field1,new.fiel2);
END $$

DELIMITER ;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接