字符串类型

图片 1

  1.1 CHAR 和VARCHAR 类型

    CHAR 列的长度固定为创建表时声明的长度,VARCHAR
列中的值为可变长字符串。在检索的时候,CHAR 列删除了尾部的空格,而VARCHAR
则保留这些空格。(在sqlserver里都是长度2)

CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
INSERT INTO vc VALUES ('ab ', 'ab ');
SELECT LENGTH(v),LENGTH(c) FROM vc;

  图片 2 

  1.2 BINARY 和VARBINARY 类型

    BINARY 和VARBINARY 类似于CHAR
和VARCHAR,不同的是它们包含二进制字符串。

CREATE TABLE t (c BINARY(3));
INSERT INTO t VALUES('a');

  1.3 ENUM 类型 (ENUM 中文名称叫枚举类型)  插入1为M,2为F,
3则报错。    数字序号对应着字段数。

CREATE TABLE t1 (gender ENUM('M','F'));
-- 插入枚举类型的四种值
INSERT INTO t1 VALUES('M'),('1'),('f'),(NULL);
SELECT * FROM t1;

  可以看出ENUM 类型是忽略大小写的

  图片 3

  1.4 SET 类型

    Set 和ENUM 除了存储之外,最主要的区别在于Set
类型一次可以选取多个成员。 一行不会插入重复值如: a,d,a 保存后为a,d  

CREATE TABLE t3 (col SET ('a','b','c','d'));
INSERT INTO t3 VALUES('a,b'),('a,d,a'),('a,b'),('a,c'),('a');
SELECT * FROM t3;

    图片 4

  

 

阅读目录

概述  

SQL Server Service Broker
用来创建用于交换消息的会话。消息在目标和发起方这两个端点之间进行交换。消息用于传输数据和触发消息收到时的处理过程。目标和发起方既可以在同一数据库引擎实例的同一数据库或不同数据库中,也可以在不同数据库引擎实例的同一数据库或不同数据库中。

 

每个 Service Broker
会话都有两个端点:会话发起方和目标。您将执行下列任务:

  • 为目标创建一个服务和队列,并为发起方创建一个服务和队列。
  • 创建请求消息类型和答复消息类型。
  • 创建约定,指定请求消息从发起方传递到目标并且答复消息从目标传递到发起方。

然后执行一个简单会话:

  • 启动会话。
  • 从发起方向目标发送一个请求。
  • 在目标处接收请求并将答复发送到发起方。
  • 在发起方处接收答复。
  • 结束会话。

对于其两端在同一 数据库引擎
实例中的会话,其消息不通过网络传输。数据库引擎
安全性和权限将限制对授权主体的访问。此方案不需要网络加密。

  • 一:触发器的优点
  • 二:触发器的作用
  • 三:触发器的分类
  • 四:触发器的工作原理
  • 五:创建触发器
  • 六:管理触发器 

一、创建会话对象

概念:

1.启用Service Broker

----创建数据库
IF NOT EXISTS(SELECT * FROM SYS.DATABASES WHERE name='Dsend')
BEGIN
     CREATE DATABASE Dsend;

END

USE master;
GO
---开启数据库BROKER
ALTER DATABASE Dsend  SET ENABLE_BROKER;
GO

SELECT is_broker_enabled FROM SYS.DATABASES WHERE NAME='Dsend'

USE Dsend;
GO

  触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。

2.创建消息类型

由于经常在多个数据库引擎实例间引用 Service Broker 对象,因而大多数
Service Broker 对象的名称都是 URI
格式的。这有助于确保它们在多台计算机上是唯一的。这两种消息类型都指定
Service Broker 将只验证消息是否是格式正确的 XML 文档,并且指定 Service
Broker 将不按照特定架构验证 XML。

CREATE MESSAGE TYPE
       [//Dsend/test/RequestMessage]
       VALIDATION = WELL_FORMED_XML;
CREATE MESSAGE TYPE
       [//Dsend/test/ReplyMessage]
       VALIDATION = WELL_FORMED_XML;

创建请求消息和答复消息,并且消息的格式为XML格式。

注意:Service Broker
验证传入消息。如果消息包含的消息正文与指定的验证类型不符,则 Service
Broker
将放弃此无效消息,并向发送此消息的服务返回一条错误消息。会话双方必须定义相同的消息类型名称。为便于排除故障,尽管
Service Broker
不要求会话双方使用相同的验证,但通常会话双方还是会为消息类型指定相同的验证。消息类型不能是临时对象。允许使用以
# 开头的消息类型名称,但它们是永久对象。

触发器和存储过程的区别:

3.创建约定

约定用于定义在 Service Broker
会话中所使用的消息类型,还用于确定会话的哪一端可以发送该类型的消息。每个会话都要遵循一个约定。当会话开始时,启动服务为会话指定约定。目标服务指定该目标服务将接受其会话的约定。 

/*
SENT BY INITIATOR    ----指示只有会话的发起方才能发送指定消息类型的消息。启动会话的服务称为会话的“发起方”
SENT BY TARGET       ----指示只有会话的目标才能发送指定消息类型的消息。接受由另一个服务启动的会话的服务称为会话的目标。
SENT BY ANY          ----指示发起方和目标都可以发送此类型的消息。
*/

CREATE CONTRACT [//Dsend/test/RequestContract]
      ([//Dsend/test/RequestMessage]    
       SENT BY INITIATOR,             ---约定只有发起方才能使用//Dsend/test/RequestMessage消息类型
       [//Dsend/test/ReplyMessage]
       SENT BY TARGET                 ---约定只有答复方才能使用//Dsend/test/ReplyMessage消息类型
      );

发表评论

电子邮件地址不会被公开。 必填项已用*标注