Sql 插入时的视图级联,然后转储到表/视图,而不是触发器,然后转储到表?
我想将视图数据转储到一个表中。我有一个视图,它可以执行很多case/算法/类似于这样的操作:(暂时不要关心这段代码…) 在插入时,我希望将此视图的数据转储到表中 创建此视图时,是否在插入时硬编码级联或 我是否在insert上创建一个instead of触发器以转储到表中Sql 插入时的视图级联,然后转储到表/视图,而不是触发器,然后转储到表?,sql,tsql,view,triggers,Sql,Tsql,View,Triggers,我想将视图数据转储到一个表中。我有一个视图,它可以执行很多case/算法/类似于这样的操作:(暂时不要关心这段代码…) 在插入时,我希望将此视图的数据转储到表中 创建此视图时,是否在插入时硬编码级联或 我是否在insert上创建一个instead of触发器以转储到表中 无论哪种方式,我将如何编码?不要通过视图插入。如果视图中包含复杂的逻辑,则可能无法映射回基础表,也可能无法进行插入 例如,使用您的示例:如果更新视图以使something1字段具有不同的值,如何将此值反构造为l1、l12和l31
无论哪种方式,我将如何编码?不要通过视图插入。如果视图中包含复杂的逻辑,则可能无法映射回基础表,也可能无法进行插入 例如,使用您的示例:如果更新视图以使
something1
字段具有不同的值,如何将此值反构造为l1
、l12
和l314
的正确基础值
请改用存储过程,并确保应用程序使用该存储过程,并且不会尝试更新视图
您可以在所有基础表上创建触发器,以查询视图并更新所需额外表中的数据,尽管这似乎违背了视图的观点。@user719825-不会。您需要对应用程序进行结构化,以便使用SP进行插入而不是视图。要对应用程序进行结构化,您指的是作业?或者通过trigger?@user719825使Sp运行-我的意思是在应用程序代码中,在您的数据访问中。您无法更新此复杂视图,也无法期望在基础表中得到正确的结果。我理解您的意思,但我唯一关心的是何时执行SP?视图会自动更新。每次在其中一个下划线表(创建视图的表)中创建记录时,都必须执行SP。视图如何自行更新???必须有东西更新基础表。
select c1.a as car, c1.b as boat, c1.c as tree convert(char(1),
dbo.aa(l1+l12+l314)) as something1, convert(varchar(9), dbo.bb(l1+l1+l13+l14, 2))
as something2, bo.bb(l1+l12+l13+l14, 3) as something3, convert(char(1),
dbo.aa(l1+l1+l1+l14)) as something4, case when dbo.aa(l1+l12+l13+l14, 2) like
'ttt' then convert(varchar(20), bb(l1+l12+l13+l14, 5))
else null ............... etc..