仅在 1 个基表中更新数据库联接视图
Posted
技术标签:
【中文标题】仅在 1 个基表中更新数据库联接视图【英文标题】:Updating a Database Joined view in only 1 base table 【发布时间】:2013-07-24 05:29:02 【问题描述】:我有一个数据库视图,它由连接 2 个基表组成,比如表 1、表 2。 我想确保,无论何时,在视图上调用更新或插入,它只更新表 1 的列,并将表 2 的列保留为 NULL。 有可能吗?
【问题讨论】:
【参考方案1】:不,如果您想通过数据库视图更新或插入该视图,则应使用只使用一个表创建该视图。请考虑以下示例。
准备表tab
和tab2
create table tab
(
id int
)
create table tab2
(
id int
)
准备表vtab
和vtabboth
。 vtabboth
有一个join
create view vtab
as
select * from tab
create view vtabboth
as
select t.id as tid ,t2.id as t2id from tab t
join tab2 t2 on t.id = t2.id
下面的插入将起作用
insert into vtab
values (1)
下面插入
insert into vtabboth
values (1,1)
会报错:
视图“vtabboth”不可更新,因为 FROM 子句名称 多个表。
【讨论】:
以上是关于仅在 1 个基表中更新数据库联接视图的主要内容,如果未能解决你的问题,请参考以下文章