视图触发器:通过视图修改数据

wwei07 2005-05-13 08:41:02
视图:查询每本书的编号、书名、类型、作者名、出版社编号、出版社名、价格、出版日期

Create View V_BOOK as
select titles.title_id, titles.title,titles.type, au_fname, titles.pub_id, pub_name, price, pubdate
from titles, publishers, titleauthors, authors
where titles.pub_id=publishers.pub_id
and titles.title_id=titleauthors.title_id
and titleauthors.au_id=authors.au_id

=========================================
对该视图写一触发器,通过视图修改书的价格,并写出触发该触发器的语句。
...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
warren1999 2005-05-19
  • 打赏
  • 举报
回复
楼上很好用
warren1999 2005-05-19
  • 打赏
  • 举报
回复
楼上不很好用
paoluo 2005-05-13
  • 打赏
  • 举报
回复
楼主是需要这个吧。

--一般情况下不允许对两个基表以上的view进行更新操作。
--但是可以用instead of trigger同时完成对多个表的insert/delete

--instead of insert触发器在view上的使用

--先创建两个基表用
create table test1 (a int,aa varchar(32))
create table test2 (b int,bb varchar(32))
go
--创建基表的视图
create view v1
as
select test1.*,test2.* from test1 ,test2 where test1.a=test2.b
go

--insert v1 values(1,'aa',1,'bb')--这个时候对该view进行insert将失败,因为不能对两个基表以上的视图进行更新

--所以现在再对v1创建一个instead of insert trigger
--create trigger/proc的句子比较单独运行

create trigger trg_v1 on v1 --在视图上建立instead of insert触发器,在insert view前触发
instead of insert
as
begin
insert test1 select a,aa from inserted
insert test2 select b,bb from inserted
end
go

insert v1 values(1,'aa',1,'bb') --这个时候对view就可以进行insert了~

Select * from test1
Select * from test2

--当然,也可以创建instead of delete进行删除:
create trigger trg_v2 on v1
instead of delete
as
begin
delete from test1 where a in(select a from deleted)
delete from test2 where b in(select a from deleted)
end
go

delete from v1 where a=1 --对视图进行delete

Select * from test1
Select * from test2

--删除测试的所有对象
drop trigger trg_v1
drop trigger trg_v2
drop table test1
drop table test2
drop view v1
GO
paoluo 2005-05-13
  • 打赏
  • 举报
回复
视图上是可以建立触发器,但是“对该视图写一触发器,通过视图修改书的价格”,表述好像有问题吧。
wwei07 2005-05-13
  • 打赏
  • 举报
回复
对视图可以有触发器的,虽然我刚接触SQL SERVER
paoluo 2005-05-13
  • 打赏
  • 举报
回复
触发器是写在表上的的,你更改的是表中的数据。

34,575

社区成员

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

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