转自:http://www.maomao365.com/?p=4508

<span style="color:red;font-weight:bold;">
我们熟知一个视图需要满足以下条件,我们才可以使用upate视图来通过视图修改数据的目标,
那么现在有一个需求,领导需要我们建立一个视图,并且禁止通过视图来修改数据。
<hr />
首先我们可通过视图修改数据的先决条件:
1 创建视图的语句中,没有聚合函数,没有使用 group by top union distinct等关键字
2 没有使用其它方法派生出的新列
3 视图中至少存在一个表
</span>
<hr />
那么我们现在需要达到禁止通过视图修改数据的目的,我们需反向操作,例:
下文我们采用union 组合一个空列来达到禁止修改视图的方法

/*1 建表*/
create table A (keyId1 int ,info1 int)
create table B (keyId2 int,info2 int) insert into A values(1,2),(3,4)
insert into B values(1,6),(7,8)
go /*2 创建视图 采用union all 关键字来禁止对视图进行修改*/
create view A_vw
as
select keyId1,info1,info2,keyId2 from A a left join B b on a.keyId1 = b.keyId2
union all
select top 0 0 as keyId1,0 as info1,0 as info2,0 as keyId2
go /*3 对视图修改返回相应的错误信息*/
update A_vw set info2 =900 where keyId1=1
go

mssql sql server上如何建一个只读视图–视图锁定的另类解决方案的更多相关文章

  1. (转)SQL Server上的一个奇怪的Deadlock及其分析方法

    原文地址:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/28/sql-server-deadlock.aspx 最近遇到了一个看上去很奇怪,分析起来很 ...

  2. php连接微软MSSQL(sql server)完全攻略

    http://www.jb51.net/article/98364.htm php连接微软MSSQL(sql server)完全攻略 作者:吵吵 字体:[增加 减小] 类型:转载 时间:2016-11 ...

  3. Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014

    Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页 ...

  4. 给你的Kubernetes集群建一个只读账户(防止高管。。。后)

    给你的Kubernetes集群建一个只读账户 需求:我们知道搭完k8s集群会创建一个默认的管理员kubernetes-admin用户该用户拥有所以权限,有一天开发或测试的同学需要登录到k8s集群了解业 ...

  5. SQL Server中NULL的一个测试

    我们都知道SQL Server中NULL是一个很特殊的存在,因为NULL不会等于任何值,且NULL也不会不等于任何值.对于NULL我们只能使用IS或IS NOT关键字来进行比较. 我们先来看看下面一个 ...

  6. Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..

    Atitit.mysql  oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server.. 1. with ... as (...) 在mys ...

  7. SQL Server如何找出一个表包含的页信息(Page)

    在SQL Server中,如何找到一张表或某个索引拥有那些页面(page)呢? 有时候,我们在分析和研究(例如,死锁分析)的时候还真有这样的需求,那么如何做呢? SQL Server 2012提供了一 ...

  8. [转][MSSQL]SQL Server 2008 记住密码功能

    本文转自:http://zhidao.baidu.com/link?url=V_laNOvutMin0kU3DUaMhLSFAYfgtz2IoEAjh8grNVPOZLpd8Pudb4iqZl88Tn ...

  9. piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql

    piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...

随机推荐

  1. leetcode — combination-sum-ii

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** *Source : https://oj ...

  2. 使用redis进行基于shiro的session集群共享

    之前写过一篇nginx多tomcat负载均衡,主要记录了使用nginx对多个tomcat 进行负载均衡,其实进行负载均衡之前还有一个问题没有解决,那就是集群间的session共享,不然用户在登录网站之 ...

  3. MySQL中间件之ProxySQL(2):初试读写分离

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.实现一个简单的读写分离 这里通过一个简单的示例实现ProxySQL ...

  4. Perl:写POD文档

    官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出.在开始下面的文章之前,请先粗略 ...

  5. Hyperledger Fabric链码之二

    上篇文章中我们介绍了链码的概念,本文中我们将介绍Fabric下链码的编写和测试.我们会通过一个简单例子的方式来阐述链码API的使用. 链码API     每一个链码程序都必须实现一个接口Chainco ...

  6. Python系列:二、数据类型--技术流ken

    标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...

  7. SELECT INTO和INSERT INTO SELECT的区别

    数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Table_2 FROM Table_1 Table_2表存在,报错:数据库 ...

  8. Python多线程的简单实现(生产者消费者模型)

    __author__ = "JentZhang" import time, threading, queue q = queue.Queue(maxsize=) # 声明队列 de ...

  9. mysql 创建函数This function has none of DETERMINISTIC, NO SQL, or READS

    今天在mysql 5.6上创建函数的时候 发现报错: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or R ...

  10. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...