SQLServer中同义词Synonym的用法
以前一直认为SqlServer中的同义词(Synonym)没有什么用处,所以也一直没有去查它的语法格式。今天碰到一个问题,用Synonym来解决再好不过了。问题是这样子的,我的系统中用到了多个数据库,然后因为各个数据库中的某些数据需要同步,所以我就在其中的某个数据库中的表中添加触发器,来同步更新其它数据库中的数据。举例如下:
有两个数据库A和B,分别有表a1与b1,然后我在表a1创建了触发器来更新表b1中的数据,触发器大概如下:
as
……
update t2 set t2.字段=t1.字段
from inserted t1,B..b1 t2 where t1.字段=t2.字段
反正就是,我在a1的触发器中用到了B..这种方式来引用数据库B中的对象。
然后问题就来了,今天老板说在同一台服务器上要同时安装多个系统。那么就需要把数据库A和数据库B复制多份,当然复制出来的数据库名字就不能叫A和B了,可能叫A1与B1。那么A1中的触发器就不能更新B1中的数据了,因为A1中的触发器是使用B..这种方式来引用的。这种情况下,必须将全部的B..全部换成B1..。这样,如果这样引用的地方多了,那就是一场灾难了。
使用同义词Synonym就能很好的解决这个问题,首先大概说一下同义词(Synonym)的作用。
同义词:就是定义一个字符串名称,用来代替一个有意义的引用对象。
在上例中,我可以用Bb1这个字符串来代代B..b1,那么以后我要操作B..b1这表,就可以直接操作Bb1,与操作前者一样的效果。那么,在部署多套系统时,只需修改一下新数据库中这个同义词的引用就可以了,触发器根本不需要修改。
下面是“创建,删除,引用”同义词的sql语句示例,注意,同义词不提供修改的功能,所以一旦创建了,就只能删除再重建,是不能够修改的。
create synonym Bb1
from B..b1
使用同义词
insert into Bbl(……) values (……)
引用同义词
select * from Bbl
删除同义词
drop synonym Bb1
查询所有同义词
select * from sys.synonyms
注意:只有SqlServer2005及以后的版本中才有Synonym。ong>。
SQLServer中同义词Synonym的用法的更多相关文章
- SQLServer中exists和except用法
一.exists 1.1 说明 EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值.EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的 ...
- sqlserver中case when then用法
sql语句判断方法之一,Case具有两种格式,简单Case函数和Case搜索函数. --简单Case函数 (CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' E ...
- Sqlite和Mysql和SqlServer中insert … select … where not exist的用法
下面介绍Mysql和Sqlite和Sqlserver中,根据select的条件判断是否插入.例如: 一.Mysql中: INSERT INTO books (name) SELECT 'SongXin ...
- SQLServer中的数据库备份和还原
更多资源:http://denghejun.github.io 备份 SQLServer中的备份,这里是T-SQL的用法,具体示例代码如下,使用也相对简单,其中TestDatabase 是指所需备份的 ...
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...
- SQL点滴18—SqlServer中的merge操作,相当地风骚
原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在tec ...
- ASP.NET中application对象的用法(面试题)
ASP.NET中application对象的用法 本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.Appli ...
- SqlServer中的merge操作(转载)
SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...
- SQLServer中数据加密方法
对SQLServer中的数据进行加密,有三种方法, 1. 在程序语言中先对数据进行加密后再把加密后的数据保存在SQLServer数据库中: 2. 利用SQLServer未公开的加密密码函数,在SQ ...
随机推荐
- [Android] Android开发优化之——从代码角度进行优化
通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代码之后都会不断的对代码进行重构.重构的好处有很多,其中一点,就 ...
- correct ways to define variables in python
http://stackoverflow.com/questions/9056957/correct-way-to-define-class-variables-in-python later say ...
- C#的常见算法(面试)(转)
一.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m //方法一,通过顺序规律写程序,同时也知道flag标志位的重要性. static int F1(int m) { ; ...
- Edge 浏览器
Edge浏览器设计理念 无法播放:https://edgewelcomecdn.microsoft.com/site/images/tabs/rs3/tabs_screen.acd367a2.mp4 ...
- Activity-数据状态的保存
由于手机是便捷式移动设备,掌握在用户的手中,它的展示方向我们是无法预知的,具有不确定性.平时我们拿着手机多数为竖屏,但有时候我们感觉累了也会躺着去使用手机,那么这时手机屏幕的展示方向可能已经被用户切换 ...
- SQL SERVER 提取字符串中汉字
IF OBJECT_ID('DBO.GET_ZNSTR') IS NOT NULLDROP FUNCTION DBO.GET_ZNSTRGOCREATE FUNCTION DBO.GET_ZNSTR( ...
- 设置IE浏览器文档模式版本
浏览器版本问题是所有开发web的程序员共同的诟病,尤其是IE浏览器,笔者上次修改公司的一个项目中出现项目是在IE9没有出来之前,而现在修改时,则发现页面上出现的表格的错乱(因为表格是通过js动态生成的 ...
- SpringCloud学习笔记(14)----Spring Cloud Netflix之Hystrix对Feign的支持
1. Hystrix对Feign的支持 添加Feign中IUserBiz的实现类HystrixFallBack: package com.wangx.cloud.springcloud02consum ...
- CentOS-1810系统DHCP服务器ISC DHCP软件配置说明
DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议.是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...
- CTSC2012 熟悉的文章 广义后缀自动机_单调队列
没啥难的,主要是单调队列忘了咋求了QAQ... Code: #include <cstdio> #include <algorithm> #include <cstrin ...