触发器从多个表 MySQL 中插入多个数据
Posted
技术标签:
【中文标题】触发器从多个表 MySQL 中插入多个数据【英文标题】:Trigger Insert multiple data from multiple table MySQL 【发布时间】:2018-01-03 08:31:55 【问题描述】:我想问一些事情。 我想使用触发器添加新数据。来自多个数据库表的值数据,我想使用“|”作为分隔符。例如“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 | value2”而不是“christin | new york”。
谢谢
【问题讨论】:
【参考方案1】:我发现你想连接两个字符串,不是吗?
-- you should use function CONCAT_WS
INSERT INTO my_table(id,new_value)values( NEW.id, CONCAT_WS('|', value1, value2) );
你可能通过 misatke 申请了bit operator。
【讨论】:
我会使用 CONCAT_WS 而不是 CONCAT——如果 value1 或 value2 为 NULL——函数 CONCAT 的结果也返回 NULL。 SELECT CONCAT('xmass', '|', NULL) FROM dual; -> 空【参考方案2】:我已经知道答案了。我只是在我的插入查询中使用 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
谢谢你的回答
【讨论】:
【参考方案3】:我希望您尝试通过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
是脚本顶部定义的变量。
【讨论】:
以上是关于触发器从多个表 MySQL 中插入多个数据的主要内容,如果未能解决你的问题,请参考以下文章