SQL - 触发器根据列值删除行

时间:2015-08-25 19:30:45

标签: sql sql-server triggers

我想就完成以下任务提出一些建议:

我有三张桌子:

表1包含“所有”列,表2和表3具有表1中相同的列子集。

表1-Col 1,Col 2,Col 3,Col 4,Col 5,Col 6
表2 - 第1栏,第2栏,第5栏 表3 - 第1栏,第2栏,第5栏

我在表1中有一个触发器,当Col 3 ='1'时,将第1,2和5列插入表2后插入。

我在表1中有第二个触发器,当Col 3 ='10'时,将第1,2和5列插入表3后插入。

该系统正在跟踪序列化部件,因此对于任何一个部件,第2列对于每个部件(序列号)都是相同的。

我需要的是,当发生向表3插入记录的触发器时,我想回到表2并删除任何记录,其中Col 2包含的值等于INSERT的col 2中的值。 / p>

这个值是一个20个字符的字符串,我找不到从插入中的列中提取实际值以在SELECT或DELETE中使用的示例。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要表1的触发器,它会插入表2和表3中的值:

create trigger insertTrigger1 on dbo.T1
  After Insert
  as
    insert into T2 select col1,col2, col5 From Inserted where col3 = 1
    insert into T3 Select col1,col2, col5 From Inserted where col3 = 10

和表3的触发器删除表2记录:

create trigger insertTrigger3 on dbo.T3
After Insert
  as
    delete from T2 where col2 in(select col2 from Inserted)

以下是Angular guide on module unit testing