叮当!削习吧~~

导航

阻止表中出现重复项——SQL UNIQUE 约束

问题:表中存在primary Key ,但是还是有重复项出现(不考虑程序过滤)

例如:

ArticleTags表(是Article和Tags的关联表)

id(primary key)         tag_id         article_id

1                                327             1234

2                                327             1234

3                                327             1234

 

其实SQL Server在表机构上可以约束这种情况发生——UNIQUE

1.给独立的字段加UNIQUE约束

CREATE TABLE ArticleTags
(

id   int NOT NULL Primary Key,

tag_id  int NOT NULL,

article_id  int NOT NULL,

UNIQUE(tag_id) ,

UNIQUE(article_id)
)

这个表中tag_id和article_id各自都不允许重复,当然这就不能满足关联表的需求

如果我们要求不能有相同的关联关系存在,那么可以这样

CREATE TABLE ArticleTags (

id   int NOT NULL Primary Key,

tag_id  int NOT NULL,

article_id  int NOT NULL,

Constaint  UniqueRefence  Unique(tag_id,article_id)

 )

 

同样,在建完表后添加UNIQUE约束

ALTER TABLE ArticleTags
ADD UNIQUE (tag_id)

ADD UNIQUE (article_id)

 

ALTER TABLE ArticleTags
ADD CONSTRAINT UniqueRefence UNIQUE (tag_id,article_id)

 

撤销UNIQUE约束

ALTER TABLE ArticleTags
DROP CONSTRAINT UniqueRefence

 

为什么在撤销里只写了一个关联的UNIQUE约束,没有独立的?

独立的貌似要用 DROP CONSTRAINT wbsdfwer,是数据库自己给他的一个特殊奇怪的id或者名字,当你在重复插入数据的时候,SQL会提示你xx约束blablabla~~~

 

望各位大神指点~~

posted on 2013-06-10 19:54  叮当!削习吧~~  阅读(340)  评论(0编辑  收藏  举报