trigger从多表mysql插入多个数据

qvtsj1bj  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(387)

我想问个问题。我想使用触发器添加新数据。来自多个数据库表的值数据,我想使用“|”作为分隔符。例如“value1 | value2”,结果必须是christin | new york
我的触发代码示例:

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 | value2”而不是“christin | new york”。
谢谢你

cyej8jka

cyej8jka1#

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

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

你可能用错了位运算符。

smdncfj3

smdncfj32#

我希望您正在尝试通过 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 是脚本顶部定义的变量。

lsmd5eda

lsmd5eda3#

我已经知道答案了。我只是在insert查询中使用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

谢谢你的回答

相关问题