触发器从多个表MySQL中插入多个数据

时间:2018-01-03 08:31:55

标签: php mysql triggers

我想问一些事情。 我想使用触发器添加新数据。来自多个数据库表的值数据,我想使用" |"作为分隔符。例如" VALUE1 | VALUE2",结果必须是christin |纽约

我的触发器代码示例:

begin
 DECLARE value1 VARCHAR(50);
 DECLARE value2 VARCHAR(50);

 SELECT some_item INTO value1 FROM table1 WHERE id=NEW.id;
 SELECT some_item2 INTO value2 FROM table2 WHERE id=NEW.id;
   INSERT INTO my_table(id,new_value)values( NEW.id, value1 | value2);

end

我该怎么写我的代码?我没有任何错误,但value1和value2的结果是错误的。结果只是" value1 |值2"不是" christin |纽约"。

三江源

3 个答案:

答案 0 :(得分:0)

我希望您尝试通过SELECT命令为变量赋值。如果是,请尝试这样做:

SELECT some_item INTO @value1 FROM table1 WHERE id=NEW.id;
SELECT some_item2 INTO @value2 FROM table2 WHERE id=NEW.id;

假设@value1@value2是脚本顶部定义的变量。

答案 1 :(得分:0)

我发现你想要连接两个字符串,不是吗?

-- you should use function CONCAT_WS
INSERT INTO my_table(id,new_value)values( NEW.id, CONCAT_WS('|', value1, value2) );

你可能已经错误地应用了bit operator

答案 2 :(得分:0)

我已经知道了答案。我只是在插入查询中使用concat。 我的查询现在:

begin
  DECLARE value1 VARCHAR(50);
  DECLARE value2 VARCHAR(50);

  SELECT some_item INTO value1 FROM table1 WHERE id=NEW.id;
  SELECT some_item2 INTO value2 FROM table2 WHERE id=NEW.id;
  INSERT INTO my_table(id,new_value)values( NEW.id, concat(value1," | ",value2));

  end

感谢您的回答

相关问题