阻止表中出现重复项——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~~~

 

望各位大神指点~~

转载于:https://www.cnblogs.com/apriljq/archive/2013/06/10/3131085.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值