`

SQL Server 中规则的使用

 
阅读更多

规则的概念:

规则(Rules)是用于执行一些与检查约束相同的功能。检查约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个检查约束。
检查约束可以在CREATE TABLE语句中定义,而规则作为独立的对象创建,然后绑定在指定的列上。
规则也是维护数据库中数据完整性的一种手段,使用它可以避免表中出现不符合逻辑的数据,例如工资小于0


创建规则:

使用CREATE RULE语句可以创建规则,其语法结构如下:

CREATERULE <架构名>.<规则名>

AS<规则表达式>

规则表达式中可以包含算术运算符、关系运算符和谓词(例如INLIKEBETWEEN等)。

例:

创建一个规则SexRule,指定变量@sex的取值只能为'男'或'女',代码如下

CREATERULE SexRule

AS@sex IN ('', '')

例:

创建一个规则WageRule,指定变量@wage的取值范围为0~50000,代码如下:

CREATERULE WageRule

AS@wage BETWEEN 0 AND 50000


绑定规则:

绑定规则是指将已经存在的规则应用到列或用户自定义的数据类型中。使用存储过程sp_bindrule可以将规则绑定到列或用户自定义的数据类型,语法如下:

sp_bindrule [ @rulename = ]规则名,

[ @objname = ]对象名

例:

规则SexRule绑定到表Employees的列Sex上的语句如下:

USE HrSystem

GO

EXECsp_bindrule 'SexRule', 'Employees.Sex'

GO

执行的结果如下:

已将规则绑定到表的列。

例:

下面通过一个INSERT语句验证规则的应用效果。执行下面的INSERT语句,向表Employees中插入一条记录。

USEHrSystem

GO

INSERTINTO Employees (Emp_name, Sex, Title, Wage,IdCard,Dep_id)

VALUES('小李', '', '职员', 10000, '110123xxxx', 1)

GO

注意,INSERT语句设置列Sex的值为。因为列Sex绑定到规则SexRule,而在规则SexRule中规定列值只能是。因此,执行INSERT语句的结果如下:

消息513,级别16,状态0,第2

列的插入或更新与先前的CREATE RULE语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'HrSystem',表'dbo.Employees',列'Sex'

语句已终止。

返回结果中提示INSERT语句中指定的列Sex的指定值('')不满足之前绑定的规则。


解除规则绑定:

使用存储过程sp_unbindrule可以解除规则的绑定,它的基本语法如下:

sp_unbindrule[ @objname = ]对象名

对象名可以是表名和列名,也可以是自定义的数据类型。

例:

使用存储过程sp_unbindrule取消表Employees的列Sex上绑定的规则,具体语句如下:

USE HrSystem

GO

EXECsp_unbindrule 'Employees.Sex'

GO

执行的结果如下:

(所影响的行数为1 行)

已从表的列上解除了规则的绑定。


删除规则:

SQL Server Management Studio中,右键单击指定的规则,在弹出菜单中选择删除项则删除指定的规则对象。
也可以使用DROP RULE语句从当前数据库中删除一个或多个规则,语法如下:

DROPRULE 规则名1 [,规则名2, ...,规则名n]

在删除规则前,需要调用sp_unbindrule存储过程解除该规则的绑定。
例:

使用DROP RULE删除规则SexRule,具体语句如下:

USE HrSystem

EXECsp_unbindrule 'Employees.Sex'

DROPRULE SexRule




分享到:
评论

相关推荐

    SQLSERVER数据库命名规范

    本规范适用于 Microsoft SQL Server 2005 及更高版本,并参考了 Microsoft SQL Server 2008R2 中自带的数据库 ReportServer。 延伸阅读 * Microsoft SQL Server 官方文档 * SQL Server 数据库设计指南 * 数据库...

    SQL Server中获取多音字拼音首字母.pdf

    "SQL Server中获取多音字拼音首字母.pdf" 本文主要讨论了在 SQL Server 中获取多音字拼音首字母的方法。该方法可以简化商品的名称、客户单位的名称的查询,在医院管理信息系统中,输入:“JN”就可以定位到“胶囊”...

    SQL SERVER 字符集问题之一解决

    在 SQL SERVER 中,我们可能会遇到 equal to 运算中的排序规则冲突问题,例如,使用 Chinese_PRC_CI_AS 和 Chinese_PRC_CS_AS 两个字符集时,出现排序规则冲突。这是因为这两个字符集的排序规则不同,导致在 equal ...

    Windows Server 2012 + SQL Server 2016安装必读

    本文档将分步骤地指导用户安装 Windows Server 2012 和 SQL Server 2016,并提供了安装过程中的重要注意事项和配置建议。 一、 Windows Server 2012 安装 1. 解压缩安装包 首先,用户需要将三个压缩文件解压到...

    NBU备份回复sql server

    这个步骤包括设置sql server连接、连接本地需要恢复的数据库、设置NBU客户端资产、还原sql server连接、win-126源的备份、找到需要还原的备份、进行还原、查看恢复日志等。 七、NBU备份回复sql server的优点 NBU...

    navicat for sqlserver

    无需安装sqlserver数据库,直接远程连接数据库,可以更方便的操作sqlserver数据库,且占用资源小

    SQL-Server2008的安装与使用-实验报告.pdf

    本实验报告的目的是掌握 SQL Server 2008 的安装和使用,熟悉安装过程中的配置选项和数据库原理。实验报告分为五个部分:实验目的、实验环境、实验指导、实验步骤和思考题。 一、实验目的 * 掌握 SQL Server 2008 ...

    在VB6.0中调用SQL Server的存储过程.pdf

    在VB6.0中调用SQL Server的存储过程需要了解存储过程的优点和使用方法,并遵守一定的规则和步骤。通过使用ADO技术,可以实现更加复杂的数据库操作,提高了系统的性能和安全性。 关键词:SQL Server、存储过程、VB...

    完美解决SQL server2005中插入汉字变成问号的问题

    关于SQL server2005中插入汉字变成问号的解决办法 1.右击你所建的数据库,点击“属性”,选择“选项”并点击。将其中的排序规则设置为:Chinese_PRC_CI_AS(选择下拉列表框即可设置),然后“确定“。2.在表中将你的...

    sqlserver 区分大小写的相关设置

    SQL Server 区分大小写的相关设置 在 SQL Server 中,默认情况下,数据库是区分大...SQL Server 中的 COLLATE 子句可以用于控制数据库、表和列中的大小写敏感度,用户可以根据需要选择不同的排序规则和大小写敏感度。

    vs自带数据库sql server的中文插入乱码问题、查找当前数据库名

    解决两个问题:vs自带数据库sql server的中文插入乱码问题、查找当前数据库名 (查找数据库名在文章中间,自己往下翻吧,不单拎出来了) vs自带数据库sql server的中文插入乱码问题: 如图所示,我插入表的中文变成...

    SQL_SERVER_2008升级SQL_SERVER_2008_R2两种办法

    1、如果是从SQL2008升级到SQL2008R2那么只能选择左侧“安装”对应右侧“从SQL SERVER 2000,SQL 2005或SQL 2008升级”这个选项来升级。 大家也注意到有一个“维护”但是这个选项是“从SQL 2008其他例如EXPRESS版本...

    如何测试SQL Server业务规则链接方法

    使用这种方法的一些潜在缺陷包括数据安全(执行业务程序的数据储存在一个表格中),和向业务逻辑程 序输入参数的非动态性。如果您觉得对于您的业务问题来说,这种方法利大于弊的话,我鼓励您尝试一下这种方法。

    Microsoft SQL Server 2005技术内幕:存储引擎(中文).pdf

     3.1 使用SQL Server 配置管理器  配置网络协议  默认的网络配置  管理服务  3.2 系统配置  任务管理  资源分配  系统分页文件的位置  非必需的服务  网络协议  与SQL Server 早期版本之间的...

    如何使用SQL Server来过滤数据

    关系型数据通常以规范化形式保存,就是说你应该尽可能少地重复数据;通常情况下,表与表之间仅通过各种键值实现关联。进一步地讲,规范化的含义就是:你不能在数据库...本文将为大家介绍如何使用SQL Server来过滤数据。

    SQLserver中按年月日生成日期型自增编码.pdf

    SQL Server 中按年月日生成日期型自增编码 本文档介绍了在 SQL Server 中生成日期型自增编码的方法,通过创建两个函数 `GenCustomCode` 和 `GenCustomID`,可以生成按年月日的日期型自增编码。该方法可以应用于各种...

    SQLServer高频面试题及答案

    数据库范式是数据库设计中的一个概念,指的是数据库设计的某些基本原则和规则。数据库范式可以用来提高数据库的设计质量和可维护性。 14. 什么是内连接、外连接、交叉连接和笛卡尔积? 内连接、外连接、交叉连接和...

    SqlServer命名、撰写规则及范例

    SqlServer命名、撰写规则及范例,实用,实在。

    nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例.docx

    在本文中,我们将介绍如何使用 Node.js 基于 mssql 模块连接 SQL Server 数据库,并进行简洁封装操作示例。 首先,我们需要安装 mssql 模块,使用以下命令即可安装: ``` npm install mssql ``` 接下来,我们需要...

    sql server2022安装教程

    下载完成后,运行安装程序文件(通常是一个名为“SQLServer2022-x64_dvdxxxxx.iso”的文件)。 二、选择安装类型 在安装向导中,选择“全新 SQL Server 独立安装或向现有安装添加功能”。这将确定安装的类型,是否...

Global site tag (gtag.js) - Google Analytics