首页 文章

sql触发器更新不同表的列

提问于
浏览
0

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

Insertion on Table1

*Table1**
Name     File
a        abc
b        efg

**Table2**
Name     File
a        abc
b        efg

Updation

**Table1**
Name     File
a        file1
b        file2


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

我想在Table1上编写一个触发器,它会在每次插入时将Column'Name''File'值复制到Table2,并在Table1中为特定Name值更新Column File时,它将以逗号分隔更新'File'列值表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

    这个更新触发器怎么样:

    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;
    
  • 0

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

    NEW.a_file --not table1.a_file (for trigger on table1)
    

相关问题