数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

一、用sql语句来实现自定类型和规则实现check约束从而保证数据的完整性
==创建自定义类型并绑定规则=========================================================
/*创建一个名为list的规则,这条规则表明变量只能取0和1两个值*/
CREATE RULE list
        AS @col IN (0,1)
go

/*创建一个自定义的数据类型,它是int类型的子类型*/
exec sp_addtype IntSwitch, "int", "NOT NULL"
/*把规则list绑定到自定义类型IntSwitch上去*/
exec sp_bindrule list, IntSwitch
go

/*创建一个名叫mytest的表,其中有一个字段on_or_off为自定义的IntSwitch类型*/
CREATE TABLE mytest (
       on_or_off   IntSwitch
)
go

在SQL的查询分析器中运行上面这行代码,则在数据库中产生了一个名叫IntSwitch的自定义的数据类型,它是Int类型的一个子集,该类型的数据只能取0或1这两个值。同时数据库中还生成了一个名叫mytest的表,表中有一个IntSwitch的类型的字段on_or_off,它只能取0或1这两个值,而且不能为空。
打开SQL2000的企业管理器,分别在表、规则和用户自定义类型中查看,就可以看到以上的信息。

==取消绑定的规则并删除自定义类型============================================================
  要想取消以上的操作:
/*取消规则在自定义类型上的绑定*/
EXEC sp_unbindrule IntSwitch
/*删除规则*/
DROP RULE list
/*要先保证没有字段使用自定义类型才可以删除自定义类型,可以到企业管理器的“用户自定义类型”里查看有哪些字段在使用这个自定义类型*/
/*在表mytest的设计视图中将on_or_off字段的类型设为其它类型,如int型*/
/*删除自定义类型*/
EXEC sp_droptype 'IntSwitch'

二、在ERwin中设置域来实现check约束从而保证数据的完整性
  1、在ERwin的Domains里新建一个名叫IntSwitch的域,其父域为Number(在general选项卡的Domain Parant里设置)
  2、打开SQL SERVER选项卡,在NULL OPTION处设置该域是不是允许取空值;在valid处打开对话框,新建一个名叫list的规则(如果合适的规则已存在,可以在下拉列表中选取就可以了)。----给新建的规则取个名字,然后可以用三种方式来定义这个规则:(1)用户自定义,就像上面的例子给出的那样,选中“user-define”然后自己输入,输入的格式是:@局部变量名 表达式 ;(2)Min/Max方式,设置一个最大和最小值,确定一个范围;(3)Valid value中设置几个有效值就可以了。
3、确定以后一个名为IntSwitch的绑定了规则list的域就生成了。

用tool-->forwardenginerr/schema generation...导出SQL代码看一下,和上面的代码完全相同。

三、可以设置一个默认值
  道理是和上面一样的。
/*创建规则*/
CREATE RULE list
        AS @col IN (0,1)
go
/*创建一个默认值*/
CREATE DEFAULT SwitchValue
        AS 0
go
/*创建自定义类型*/
exec sp_addtype IntSwitch, "int", "NOT NULL"
/*把创建的默认值绑定到创建的自定义类型上*/
exec sp_bindefault SwitchValue, IntSwitch
/*将规则绑定到自定义类型上*/
exec sp_bindrule list, IntSwitch
go

同样的道理,要取消默认值的绑定则:
EXEC sp_unbindefault IntSwitch
然后,再删除默认值:
DROP DEFAULT SwitchValue

在ERwin中为一个域建立默认值就更简单了,只要在defaut处打开一个对话框,然后新建一个默认值,起一个名字,如“SwitchValue”,然后在SQL SERVER选项卡的Server Value--SQL SERVER DEFAULT处输入默认值就可以了。




相关文章

相关软件