`

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 数据库设计指南 * 数据库...

    sqlserver自动生成sql语句工具sqlserver转oracle

    首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种工具通常能帮助数据库管理员快速获取数据库的定义,便于备份、迁移或在其他环境中...

    navicat for sqlserver

    总的来说,Navicat for SQL Server 是一个功能全面、易于使用的数据库管理工具,无论是在日常的数据库维护,还是在复杂的项目开发中,都能提供极大的便利。通过其提供的各种工具和特性,用户可以高效地完成SQL ...

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

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

    sql server安装指南

    在安装配置过程中,安装程序还会进行一系列的规则检查,确保系统满足运行SQL Server所必需的条件,包括系统环境、磁盘空间和网络配置等。文档中提到安装前的准备包括错误报告设置和安装配置规则的确认。 安装完成后...

    SQL Server精华 (CHM)_sqlserver_SQLServer笔记_

    通过深入学习《SQL Server精华 (CHM)_sqlserver_SQLServer笔记_》中的内容,无论是初学者还是经验丰富的数据库管理员,都能进一步提升对SQL Server的理解和应用能力,从而更好地应对实际工作中的挑战。

    sqlserver离线安装包

    "sqlserver离线安装包" 提供了这样一种解决方案,使得我们可以在无网络的情况下完成 SQL Server 的部署。 离线安装通常涉及到以下几个关键步骤和知识点: 1. **下载完整安装包**: 要进行离线安装,首先你需要在有...

    SQL SERVER 字符集问题之一解决

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

    SQLServer2008开启远程连接

    1. **开放端口**:由于默认情况下防火墙会阻止外部访问SQL Server,因此需要在Windows防火墙中添加例外规则。 2. **添加SQL Server程序到允许列表**:打开Windows防火墙设置,将SQL Server的执行文件(sqlservr.exe)...

    sql server 中如何增加递增的序号列【实用】

    sql server 中如何增加递增的序号列 sql server 是一种功能强大且广泛应用的关系...在 sql server 中增加递增的序号列可以使用多种方法,每种方法都有其特点和优缺。选择哪种方法取决于具体的业务需求和数据特点。

    SQLServer中Partition By及row_number 函数使用详解

    在SQL Server中,`PARTITION BY` 和 `ROW_NUMBER()` 是两种非常重要的分析函数,它们在处理大数据集时尤其有用。本文将详细讲解这两个函数的使用方法及其在实际场景中的应用。 `PARTITION BY` 关键字是分析函数的一...

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

    特别是在使用SQL Server数据库时,业务规则链接方法是一种值得探讨的技术策略。本文将深入分析如何在SQL Server中实现业务规则链接,并重点探讨测试这种方法的策略。同时,我们也会考察其优缺点,以及在何种情况下...

    Windows Server 2012 + SQL Server 2016安装必读

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

    SqlServer命名、撰写规则及范例

    SqlServer 命名规则是指在使用 SqlServer 数据库时,为了保持代码的一致性和可读性所设计的一系列规则。这些规则涵盖了表名、字段名称、存储过程、视图、触发器名称的定义等多个方面。 首先,在表名定义中,Sql...

    sqlserver修改端口

    在SQL Server数据库管理系统中,有时出于安全或者特定需求,我们需要更改服务器监听的默认端口。SQL Server默认使用1433端口进行TCP/IP通信,但这个端口可能因为防火墙策略、避免与其它服务冲突等原因需要修改。下面...

    Android远程调用sql server实现增删查改

    连接字符串格式通常为:“jdbc:jtds:sqlserver://DbComputerNameOrIPAddr:1433/DatabaseName”。其中,“DbComputerNameOrIPAddr”是SQL Server的计算机名或IP地址,“DatabaseName”是目标数据库的名称。 3. **执行...

    NBU备份回复sql server

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

    mysql转化成sql server sql转化成mysql工具

    2. 转换规则应用:根据SQL Server的语法特性,工具会将MySQL的SQL语句转化为相应的SQL Server语法。 3. 数据导出:将MySQL中的数据导出为SQL脚本,或者直接导入到SQL Server中。 4. 验证与调整:迁移后,需要验证...

    SQL SERVER 2008, 一键卸载工具

    - `sqlserver卸载清除工具`:可能是通用的SQL Server卸载工具,不区分具体版本或操作系统位数。 - `MSSQL卸载工具_Windows_x86`:适用于32位操作系统的卸载工具。 在使用这些工具时,用户需要注意以下几点: 1. **...

    向sql server数据库插入中文时显示乱码

    当我们在ASP.NET 2.0应用程序中使用SQL Server 2005数据库,并尝试将包含中文字符的数据插入到数据库时,可能会发现中文字符变成了乱码。这通常是因为字符编码不一致导致的。 ### 原因分析 #### 字符集和排序规则...

Global site tag (gtag.js) - Google Analytics