高分求:当向基础表中插入记录时,如何使引用此基础表视图的更新触发器触发

wooden954 2011-01-25 10:13:23
一个基础表TableA,它被视图ViewA引用(且ViewA中不包含对其它表的引用),视图ViewA中写一插入触发器
当向基础表TableA中插入数据时,如何使得ViewA中的插入触发器触发?
...全文
237 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wooden954 2011-01-27
  • 打赏
  • 举报
回复
呵呵,貌似没有其它答案了,结帖了
w75251455 2011-01-25
  • 打赏
  • 举报
回复
我认为的最好的处理是~没有触发器~~把你要给基表的代码再写给总表一次。
w75251455 2011-01-25
  • 打赏
  • 举报
回复
当基表更新时,要通过数据库再做一些操作话,必然要写触发器,如果你要通过写基表再去触发视图的触发器那就是在基表的触发器上再写一个触发的语句,如果是这样,那也方法不到哪去。。。因为还是写了那么多触发器。
如果我没理解错的话,我认为不需要直截去给基表去更新数据,把所有的基表操作写给视图,通行视图触发器再进行更新,但是这个的前提是要有一个能区分每个基表的列(这个容易),通过这个触发器里的判断操作。
w75251455 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wooden954 的回复:]
引用 9 楼 acherat 的回复:
你的基表更新了,你的视图也会相应的更新,那么触发器建立在表上和建立在视图上有什么区别,你只要把触发器建立在基本的更新上,在触发器里的语句对视图操作就可以。
我有以下办法可以使用
1.为这几十上百个表每一个都写插入、更新、删除触发器,以将信息同步到总表
2.写一个使用Union的总表视图,对此视图写插入、更新、删除触发器,当基表更新时,这个视图上的触发器自动触发,将信息同步到总表
[/Quote]
1.当基表更新时。
要通过数据库再做一些话,必然要写触发器,如果你要通过写基表再去触发视得的触发器那就是在基表的触发器上再写一个触发的语句,如果是这样,那也方法不到哪去。。。因为还是写了那么多触发器。
如果我没理解错的话,我认为不需要直截去给基表去更新数据,把所有的基表操作写给视图,通行视图触发器再进行更新,但是这个的前提是要有一个能区分每个基表的列(这个容易),通过这个触发器里的判断操作。
王向飞 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wooden954 的回复:]

引用 9 楼 acherat 的回复:
你的基表更新了,你的视图也会相应的更新,那么触发器建立在表上和建立在视图上有什么区别,你只要把触发器建立在基本的更新上,在触发器里的语句对视图操作就可以。

不一样的:
我的基表实际上有几十上百个,它们都是同一类表,用于记录各种各样的事件的,这些表是结构化的,用于记录详细信息,这些表是必须存在的。
并且我还有一个总表,它是一个记录事件的总表,仅有……
[/Quote]这么做的唯一后果就是数据异常混乱,对于以后维护的人来说叫苦不迭
wooden954 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 maco_wang 的回复:]
终于明白楼主要干什么了,思路很诡异。
等高手出招,关注一下。
[/Quote]
*.* ,我被人说思路很诡异好几次了,为什么总是我!Crying
AcHerat 元老 2011-01-25
  • 打赏
  • 举报
回复
这个好像没办法用触发器来实现各总的吧!
可以建立一个存储过程,弄个汇总的,做个JOB,设定一个执行间隔时间,看你实际中更新表的频率了。
叶子 2011-01-25
  • 打赏
  • 举报
回复
终于明白楼主要干什么了,思路很诡异。
等高手出招,关注一下。
wooden954 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 acherat 的回复:]
你的基表更新了,你的视图也会相应的更新,那么触发器建立在表上和建立在视图上有什么区别,你只要把触发器建立在基本的更新上,在触发器里的语句对视图操作就可以。
[/Quote]
不一样的:
我的基表实际上有几十上百个,它们都是同一类表,用于记录各种各样的事件的,这些表是结构化的,用于记录详细信息,这些表是必须存在的。
并且我还有一个总表,它是一个记录事件的总表,仅有描述性信息,它的描述是从事件基表中的关键列中取的值汇总的,同样是物理表,也是必须存在的。
对于这样的情况,我有以下办法可以使用
1.为这几十上百个表每一个都写插入、更新、删除触发器,以将信息同步到总表
2.写一个使用Union的总表视图,对此视图写插入、更新、删除触发器,当基表更新时,这个视图上的触发器自动触发,将信息同步到总表

方法2相对于方法1来说工作量小了很多,并且维护方便(当然前提是这种方法能够实现哈)
清海扬波 2011-01-25
  • 打赏
  • 举报
回复
如果表触发器不能对视图触发器起作用,那你就应该考虑视图的触发器做什么了,这个内容能不能直接在表的触发器里面实现,这样也间接解决你的问题了。
黄_瓜 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wooden954 的回复:]
1楼:我需要的不是如何创建视图
2楼:我需要的也不是如何创建触发器

3楼:正常情况下触发器的触发条件是对触发器所依赖的表或视图在插入或更新或删除操作的情况下引起的,
比如插入触发器写在表上,只有对此表的插入操作才能引起触发器动作
或者插入触发器写在视图上,只有对此视图的插入操作才能引起触发器动作
我现在的情况是需要对基表的插入引起视图的触发器运行
[/Quote]
懂你的意思,坑定的回答你这样是行不通的。结贴给分吧
AcHerat 元老 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wooden954 的回复:]
4楼,5楼
我知道如何对视图或表进行直接触发,但不想这么做

这个帖子不是为了解决实际问题而发的,仅仅是为了了解或讨论我的这个想法是否能够实现而发的。
[/Quote]

你的基表更新了,你的视图也会相应的更新,那么触发器建立在表上和建立在视图上有什么区别,你只要把触发器建立在基本的更新上,在触发器里的语句对视图操作就可以。
wooden954 2011-01-25
  • 打赏
  • 举报
回复
[Quote=4楼,5楼][/quote]
我知道如何对视图或表进行直接触发,但不想这么做

这个帖子不是为了解决实际问题而发的,仅仅是为了了解或讨论我的这个想法是否能够实现而发的。

黄_瓜 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wooden954 的回复:]
1楼:我需要的不是如何创建视图
2楼:我需要的也不是如何创建触发器

3楼:正常情况下触发器的触发条件是对触发器所依赖的表或视图在插入或更新或删除操作的情况下引起的,
比如插入触发器写在表上,只有对此表的插入操作才能引起触发器动作
或者插入触发器写在视图上,只有对此视图的插入操作才能引起触发器动作
我现在的情况是需要对基表的插入引起视图的触发器运行
[/Quote]
应该不能实现。
wooden954 2011-01-25
  • 打赏
  • 举报
回复
1楼:我需要的不是如何创建视图
2楼:我需要的也不是如何创建触发器

3楼:正常情况下触发器的触发条件是对触发器所依赖的表或视图在插入或更新或删除操作的情况下引起的,
比如插入触发器写在表上,只有对此的插入操作才能引起触发器动作
或者插入触发器写在视图上,只有对此视图的插入操作才能引起触发器动作
我现在的情况是需要对基表的插入引起视图的触发器运行
AcHerat 元老 2011-01-25
  • 打赏
  • 举报
回复

--你可以直接在表上建触发器!当有插入,更新,删除时操作!
create trigger tr_name on tb
for insert,update,delete
叶子 2011-01-25
  • 打赏
  • 举报
回复
CREATE TRIGGER trigger_name   ON { table | view } 

视图可以加触发器,
貌似指的是视图的结果数据增加时触发,插入也是插入到视图的相关表中。
幸运的意外 2011-01-25
  • 打赏
  • 举报
回复
视图源自基础表的引用,不能对他进行插入之类的吧。
GoAwayZ 2011-01-25
  • 打赏
  • 举报
回复
CREATE   TRIGGER   名   on   视图 
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO 表1
SELECT name1,name2
FROM inserted
INSERT INTO 表2
SELECT name3,name4
FROM inserted

END
叶子 2011-01-25
  • 打赏
  • 举报
回复
视图是基于表的,表数据变化后,视图自动也变化了
create view viewname 
as
select * from tablename


tablename的内容变化后,view的结果也就变了
加载更多回复(2)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧