SQL SERVER:在SELECT视图中,同步可以更新视图的数据。如何做到?

我现在创建了一个表table1,规定了字段类型和格式,然后通过SELECT ......INTO table1 , 将数据插入这个表中,然后创建一个视图,SELECT * FROM table1;
但是table1的源数据是时时在更新的,如何保证这个table1的数据也是时时更新的呢?当SELECT * FROM table1的时候,有办法让数据库同时运行一下SELECT ...... INTO table1 吗?

谢谢!

--楼主有两个方法
--一个是删除 插入
if object_id('table1')>0 drop table table1

go
select * into table1 from tbname

--另外一个是触发器 这个是 时时触发的 能很好完成同步效果
--给你写个框架 因为你没有表结构 我没法给你写完 有什么问题可以随时找我 希望采纳
create TRIGGER 触发器名
ON 表名
for insert,update,delete
AS BEGIN
if exists(select 1 from inserted) and not exists(select 1 from deleted)
begin
--插入操作
end
else if exists(select 1 from inserted) and exists(select 1 from deleted)--update触发器
begin
--更新操作
end
else if not exists(select 1 from inserted) and exists(select 1 from deleted)--delete触发器
begin
--删除操作
end
END
go追问

多谢如此详细的回复!但是我要的触发是在SELECT视图的时候触发,而不是在插入基础表的时候触发,因为基础表有好几十张;

根本原因是,这个视图权限我是要给出去的,但是其他权限都不给;否则写个批处理就搞定了;在SELECT视图之前,执行一下SELECT ....INTO table1

追答

--没有这样的控制 只有在程序上 查询的时候 执行这个判断
if object_id('table1')>0 drop table table1

go
select * into table1 from tbname
--我不太明白楼主的意思 如果只是查询的话 原数据是不会变的 那么为什么还要重新插入呢
--只有做更改 删除 插入 才有可能改变数据 现实生活中都没有在的需求 sql也做不到查询触发

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-18
用insert触发器
相似回答