标签: updatable-views

是否可以将数据插入MySQL视图?

我用4个表创建了一个MySQL视图.是否可以将数据插入视图并让MySQL自动将数据传递到正确的表中?

mysql sql updatable-views

44
推荐指数
1
解决办法
5万
查看次数

在Oracle中看似关键的保留视图的更新提出了ORA-01779

问题

我正在尝试将低性能MERGE语句重构为UPDATEOracle 12.1.0.2.0中的语句.该MERGE声明是这样的:

MERGE INTO t
USING (
  SELECT t.rowid rid, u.account_no_new
  FROM t, u, v
  WHERE t.account_no = u.account_no_old
  AND t.contract_id = v.contract_id
  AND v.tenant_id = u.tenant_id
) s
ON (t.rowid = s.rid)
WHEN MATCHED THEN UPDATE SET t.account_no = s.account_no_new
Run Code Online (Sandbox Code Playgroud)

它大多是低性能的,因为对大型(100M行)表有两个昂贵的访问 t

架构

这些是涉及的简化表:

  • taccount_no正在迁移其列的目标表.
  • u迁移指令表包含account_no_oldaccount_no_new映射
  • v建模contract_id和之间的一对一关系的辅助表tenant_id

架构是:

CREATE TABLE v (
  contract_id NUMBER(18) NOT NULL PRIMARY KEY,
  tenant_id NUMBER(18) NOT …
Run Code Online (Sandbox Code Playgroud)

sql oracle merge updatable-views

6
推荐指数
1
解决办法
354
查看次数

如何在TSQL中创建可更新视图

如何在TSQL中创建可更新的视图.请提供简单的示例,我可以根据我的解决方案.

最近我用TSQL帮助了我的朋友,他向我询问了可更新的视图.我认为将我的解决方案留在这里作为快速查找将是一个好主意.

如需参考,请查看msdn.

t-sql updatable-views

5
推荐指数
1
解决办法
7810
查看次数

Microsoft SQL Server(MSSQL)可更新视图,具有多个基表和完整性能

我正在使用MSSQL 2008 R2.它具有可更新视图的便利功能.例如,如果我有一个表t映射id到name:

create table t (id int not null primary key, name varchar(100) not null unique)
Run Code Online (Sandbox Code Playgroud)

然后另一个表提供一些ID和更多信息:

create table u (id int not null primary key references t, info varchar(100) not null)
Run Code Online (Sandbox Code Playgroud)

为了方便起见,这个视图让我可以看到来自u的行,并使用name列进行扩充:

create view v as select u.*, t.name from u u join t t on u.id = t.id
Run Code Online (Sandbox Code Playgroud)

那么我现在可以按名称进行更新,而不是id:

update v set info = 'foo' where name = 'fred'
Run Code Online (Sandbox Code Playgroud)

最方便的.但是,如果我想删除'fred'的行,会发生什么?

delete v where name = 'fred' -- Fails
Run Code Online (Sandbox Code Playgroud)

我收到了错误

视图或函数"v"不可更新,因为修改会影响多个基表.

正如SQL Updatable View中所解释的那样,连接表(指的是Oracle,但MSSQL的情况看起来相同),只要只有一个 …

sql function view sql-server-2008-r2 updatable-views

5
推荐指数
1
解决办法
7974
查看次数

SQL Server数据库 - 允许应用程序编辑视图中的记录?

我为一组三个表创建了一个自定义视图.如何配置视图以便应用程序可以像使用表一样编辑它?我正在使用SQL Server Studio Express.

sql sql-server views updatable-views

1
推荐指数
1
解决办法
178
查看次数

可以在Oracle Views上执行CRUD操作

我知道这有点模糊,但我对观点不熟悉,并试图了解他们的能力.

假设我使用表的组合创建由复杂查询创建的视图.如果我试图在视图中编辑一条记录,那么视图是否足够智能,可以向后通过创建视图的逻辑并在正确的表中编辑正确的值?

是否在视图中编辑了一个值?

谢谢!

oracle crud view updatable-views

1
推荐指数
1
解决办法
911
查看次数