充分利用Unique Index

假如我们是一服装公司,在接受定单的时候,我们就要检测,一个季度是否有重复的订单,但然,在我们接受打单的时候,也要做一个检测。怎么完成这项任务呢?

 

我想,除了我们在程序级设置检测以外,最重要的就是数据库本身了。下面我们就试着来解决这个问题:

 

下面是我们的数据库设计,当然是简略版的:ORDERS订单表,主要有定单号,款号和季度ID。季度表里有一个主键和季度名。

Orders

OrderID primary key, auto increase, int 4

Style  nvarchar 100 nullable

SeasonID int 4 nullable

 

Seasons

SeasonID primary key, auto increase, int 4

Name varchar 20

 

文章开头已经提到了,我们的问题是如何解决防止同一季度接受同一款式订单。充分利用Unique Index我们就可以很简单的完成任务。看看下图详解:

o_未标题-1.gif

让表处于编辑状态,点击管理索引/键,就可以看到上画面,通过这个界面,就可以设置唯一索引来完成我们的任务。特别注意粉红区域,只有选中创建UNIQUEU)这个唯一索引才会生效。OK 我们的任务完成了!

 

在来看看,当插入数据的时候,经常会出现的数据提示:

insert into Orders(Style,SeasonID) values('style2',1)

当我们的订单中已经有款式为style2季度为1的订单,再执行上述查询的时候,会出现下列错误:

服务器: 消息 2627,级别 14,状态 2,行 1

违反了 UNIQUE KEY 约束 'IX__Orders'。不能在对象 '_Orders' 中插入重复键。

语句已终止。

我想读了上面的文章,你就会明白,该怎么解决这个问题了。哈哈,自己搞定!

好运!2006-10-30

posted @ 2006-10-31 09:45  Henry Liu  阅读(2878)  评论(8编辑  收藏  举报