假如我们是一服装公司,在接受定单的时候,我们就要检测,一个季度是否有重复的订单,但然,在我们接受打单的时候,也要做一个检测。怎么完成这项任务呢?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
我想,除了我们在程序级设置检测以外,最重要的就是数据库本身了。下面我们就试着来解决这个问题:
下面是我们的数据库设计,当然是简略版的: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我们就可以很简单的完成任务。看看下图详解:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
让表处于编辑状态,点击管理索引/键,就可以看到上画面,通过这个界面,就可以设置唯一索引来完成我们的任务。特别注意粉红区域,只有选中创建UNIQUE(U)这个唯一索引才会生效。OK! 我们的任务完成了!
在来看看,当插入数据的时候,经常会出现的数据提示:
insert into Orders(Style,SeasonID) values('style2',1)
当我们的订单中已经有款式为style2季度为1的订单,再执行上述查询的时候,会出现下列错误:
服务器: 消息 2627,级别 14,状态 2,行 1
违反了 UNIQUE KEY 约束 'IX__Orders'。不能在对象 '_Orders' 中插入重复键。
语句已终止。
我想读了上面的文章,你就会明白,该怎么解决这个问题了。哈哈,自己搞定!
好运!2006-10-30