我一直在研究一个数据库,它包含两个模式名称作为前端和备份。在一个表名称中的位置:
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中两次?
答案 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