SQL 数据库里是否可以通过视图更改表中的数据

SQL 数据库里是否可以通过视图更改表中的数据,第1张

有的可以,有的不可以,视图与表是两个概念,UPDATE视图,实际就是修改了视图对应的表中的数据,自己可以测试一下!但如果视图中没有表(因为有的视图并不一定有表),则不能更新!比如:

create view ass (a, b, c) AS select 0, 's', 0 就不依赖表,当然不能更新,如果在生成视图的SQL语句中有UNION关键字时,也不能更新,其它很多视图是可以更新和修改的,修改的列是对应的表中的列。

--楼主有两个方法

--一个是删除 插入

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

对于没有复杂处理的 单表 视图, 是可以 UPDATE 的。

例如这样的视图:

CREATE VIEW v_1 AS SELECT FROM 某表。

但是假如你的视图, 是单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。

例如这样的视图:

CREATE VIEW v_2 AS SELECT id, COUNT() as num FROM 某表--前面是单表的, 下面说多表的 ---

对于2张表的,假如你的查询里面, 这2张表是 一对一的关系。 且视图里面, 包含了主键,那么是可以 UPDATE 的。

例如下面这样的视图:

CREATE VIEW temp_view AS

SELECT

t1name AS t1Name,

t1age AS t1Age,

t2name AS t2Name,

t2age AS t2Age

FROM

t1, t2

WHERE

t1name = t2name

然后直接更新视图。

UPDATE temp_view SET t1Age = t2Age;

完整的例子, 可参考:

>

但是假如你的视图里面的 2个表, 不是一一对应的。

或者是带了 SUM / COUNT 等统计函数的, 那么可能是没办法更新了。

以上就是关于SQL 数据库里是否可以通过视图更改表中的数据全部的内容,包括:SQL 数据库里是否可以通过视图更改表中的数据、SQL SERVER:在SELECT视图中,同步可以更新视图的数据。如何做到、SQL数据库里是否可以通过视图更改表中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9756024.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存