sql触发器更新不同表的列

时间:2016-04-04 12:40:24

标签: mysql sql triggers

您好我想实现一个触发器,我有两个表:

在Table1上插入

*Table1**
Name     File
a        abc
b        efg

**Table2**
Name     File
a        abc
b        efg

更新用

**Table1**
Name     File
a        file1
b        file2


**Table2**
Name     File
a        abc,file1
b        efg,file2

我想在Table1上写一个触发器,它将复制Column' Name' '文件'对于表1中的每个插入值以及对于表1中特定名称值的列文件的更新值,它将更新'文件'列值以表2中的逗号分隔形式。

我能够成功创建插入触发器但是更新的以下触发器更新了两个表中常见的所有行:

CREATE TRIGGER trigger2 AFTER UPDATE ON Table1
FOR EACH ROW
    UPDATE Table2 INNER JOIN 
           upload 
           ON (Table2.Name = Table1.Name)
         SET Table2.a_file = CONCAT(Table2.a_file, ","),
             Table2.a_file = CONCAT(Table2.a_file, "Table1.a_file") ;

此外,CONCAT()函数无法正常工作。

2 个答案:

答案 0 :(得分:0)

此更新触发器如何:

CREATE TRIGGER trigger2 AFTER UPDATE ON Table1
FOR EACH ROW
UPDATE Table2 SET a_file = CONCAT(a_file, ",", NEW.a_file) WHERE Name = NEW.Name;

答案 1 :(得分:0)

您应该使用NEW来获取更新值
例如

NEW.a_file --not table1.a_file (for trigger on table1)
相关问题