在具有额外常量列的表上插入触发器到新表中?

时间:2014-01-24 19:11:53

标签: sql sql-server triggers insert updates

我一直在研究一个数据库,它包含两个模式名称作为前端和备份。在一个表名称中的位置:

front.Details

studID SemID GPA
100     1     4
200     2     3

另一个表名是:

backup.DetailsV
studID  DEPT SemID GPA

表backup.DetailsV中的输出应如下所示:

studID  DEPT SemID GPA
100      1     1    4
200      1     2    3
100      2     1    4
200      2     2    3 

如何在表格详细信息上创建触发器,以使用dept id 1和2插入到表DetailsV中两次?

1 个答案:

答案 0 :(得分:0)

继续Damien的想法,如果使用DetailsV表的唯一原因是生成该输出,您可以使用视图轻松完成。如果它只是读取数据,则存储过程不知道或不关心源是表还是视图。

Select studID, 1 as Dept, SemID, GPA
From front.Details
UNION ALL 
Select studID, 2 as Dept, SemID, GPA
From front.Details

如果您需要保留数据流经front.Details表,或者如果您需要在报告之前操纵该数据,则只保留备份表。如果这真的是你想要的,那么触发器查询非常相似,但是不是寻址表,而是使用特殊的[inserted]表来获取新值。

Select studID, 1 as Dept, SemID, GPA
From inserted
UNION ALL 
Select studID, 2 as Dept, SemID, GPA
From inserted