在Oracle中向视图中插入数据的方法
插入视图的条件:
1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDATE,DELETE的操作.
2.如果是连接视图,那就要遵守基本更新准则了.现在我只对INSERT准则做一下说明:在INSERT语句中不能显式或隐式的引用到任何非码保留基础表中的字段,如果在定义视图中使用了WITH CHECK OPTION子句,那就不能对视图执行INSERT操作.
注:码保留表,非码保留表的解释:
在DEPT中,DEPT_NO是主码,EMP中,EMP_NO是主码
然后建立连接视图:
create view emp_dept as
select emp.emp_no,emp.emp_name,emp.dept_no,dept.name
from emp,dept
where emp.dept_no=dept.dept_no
这个视图中,EMP_NO仍然充当主码,所以EMP为码保留表,而DEPT中的DEPT_NO就不是主码了,所以为非码保留表.
多张表关联后需要向视图插入数据,建议使用替代触发器
create trigger [触发器名]
on [视图名]
instead of insert
as
begin
--声明变量;
--从inserted表中查出所有列的数据,分别赋给声明好的变量;
--用上面的数据向第一张表插入数据
--用上面的数据向第二张表插入数据
end
此外通过user_updatable_columns表能够查询到该表或者视图是否可更新。
相关推荐
-
oracle 视图权限 oracle 创建视图权限不足
问题描述:在scott用户下创建视图的时候,报错:权限不足. (其他用户以此类推) 解决方法: 以dba用户登录 [sql] 复制代码 代码如下: sqlplus / as sysdba 赋予scott用户创建VIEW的权限 [sql] 复制代码 代码如下: grant create view to scott 以scott用户登录oracle [sql] 复制代码 代码如下: conn scott/tiger 创建视图成功 [sql] 复制代码 代码如下: CREATE OR REPLACE
-
Oracle Scott创建视图权限不足解决办法
在PL/SQL Developer数据库管理工具中,使用SCOTT用户帐号进行登录,新建SQL查询窗口,输入一条创建视图的SQL语句,随后弹出一个错误的提示信息:ORA-01031:权限不足. 上图所示的错误提示信息已经说的很明白了,这是权限不足导致的!所以,只要我们设置一个scott用户的权限就可以解决了! 在网上查了一下,设置用户权限是使用 grant,而创建视图权限是 create view,那么,要给scott用户赋予创建视图权限的语句就是下面整条语句了: grant create vi
-
Oracle创建带有参数的视图代码介绍
在Oracle里,视图不像存储过程和函数一样,可以定义输入参数,但我们可以变个方式,使用程序包来实现 首先定义程序包: /* 按个人需要定义,我定义三个参数 ,因我项目程序需要,所以三个参数都是number ,当然可定义其它类型 但切记,第二个create 的参数类型等需以第一个create一致,否则程序包创建失败 */ create or replace package p_view_param is --参数一 function set_param(num number) return nu
-
oracle中的视图详解
1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器.(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据.视图只是定义了一个查询,视图中的数据是从基表中获取
-
SpringMVC中controller接收json数据的方法
本文实例为大家分享了SpringMVC中controller接收json数据的方法,供大家参考,具体内容如下 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath
-
PHP中filter函数校验数据的方法详解
介绍PHP中filter函数校验数据的方法详解,PHP过滤器包含两种类型:Validation用来验证验证项是否合法 .Sanitization用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除. input_filters_list() 用来列出当前系统所支持的所有过滤器. 复制代码 代码如下: <?php foreach(filter_list() as $id => $filter) { echo $filter.' '.filter_id($filter).
-
C#中在WebClient中使用post发送数据实现方法
很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法.本文就较为详细的说明了WebClient中使用post发送数据实现方法. 下面先说说WebClient 最主要的功能. WebClient 构造函数 .Ctor 包括 一个空构造函数 和一个静态构造函数, 静态构造函数主要为UrlEncode 和UrlEncodeAndWirte 编码提供参照by
-
ThinkPHP框架中使用Memcached缓存数据的方法
本文实例讲述了ThinkPHP框架中使用Memcached缓存数据的方法.分享给大家供大家参考,具体如下: ThinkPHP默认使用文件缓存数据,支持Memcache等其他缓存方式,有两个PHP扩展:Memcache和Memcached,Memcahe官方有说明,主要说一下Memcached. 相对于PHP Memcache,php Memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached. 版本3.2.2开始内置了Memcached驱动(
-
sql下三种批量插入数据的方法
本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出
-
ThinkPHP3.2框架使用addAll()批量插入数据的方法
本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. // 批量添加数据 (only MySQL) $user = M('user'); //array('表字段'=>'值') $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com'); $dataList[] =
-
MySql三种避免重复插入数据的方法
前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下三种插入方式避免错误. insert ignore. replace into insert on duplicate key update insert ignore insert ignore 会忽视数据库中已经存在的数据,根据主键或者唯一索引判断,如果数据库没有数据,就会插入新的数据,如果有数据的话就跳过这条数据 小case 表结构 root:test> show create table t3G *******
-
YII框架批量插入数据的方法
本文实例讲述了YII框架批量插入数据的方法.分享给大家供大家参考,具体如下: public function insertSeveral($table, $array_columns) { $sql = ''; $params = array(); $i = 0; foreach ($array_columns as $columns) { $names = array(); $placeholders = array(); foreach ($columns as $name => $valu
-
python3.7 使用pymssql往sqlserver插入数据的方法
python3.7 使用pymssql往sqlserver插入数据 import pymssql conn = pymssql.connect(host='szs',server='SZS\SQLEXPRESS',port='51091', user='python', password='python', database='python',charset='utf8',autocommit=True) cur = conn.cursor() sql = "insert into [noval
-
在Oracle中向视图中插入数据的方法
插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDATE,DELETE的操作. 2.如果是连接视图,那就要遵守基本更新准则了.现在我只对INSERT准则做一下说明:在INSERT语句中不能显式或隐式的引用到任何非码保留基础表中的字段,如果在定义视图中使用了WITH CHECK OPTION子句,那就不能对视图执行INSERT操作. 注:码保留表,非码保留表的解释: 在DEP
随机推荐
- asp.net通过动态加载不同CSS实现多界面
- Python中异常重试的解决方案详解
- HTTP 错误 500.19 - Internal Server Error解决办法详解
- iOS应用开发中UIView添加边框颜色及设置圆角边框的方法
- js实现简单的碰壁反弹效果
- 延时加载JavaScript代码提高速度
- python文件和目录操作方法大全(含实例)
- js实现C#的StringBuilder效果完整实例
- js获取元素外链样式的方法
- 详解Python中列表和元祖的使用方法
- AJAX 进度条实现代码
- SQL Server中的RAND函数的介绍和区间随机数值函数的实现
- Oracle数据库账号被锁定解决方法
- 11款新鲜的jQuery插件[附所有demo下载]
- 基于jQuery实现顶部导航栏功能
- JS实现左右拖动改变内容显示区域大小的方法
- JavaScript中三个等号和两个等号你了解多少
- 探讨C++中数组名与指针的用法比较分析
- WPF下YUV播放的D3D解决方案
- php实现mysql连接池效果实现代码