问题:表中存在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 ArticleTagsADD UNIQUE (tag_id)
ADD UNIQUE (article_id)
ALTER TABLE ArticleTagsADD CONSTRAINT UniqueRefence UNIQUE (tag_id,article_id)
撤销UNIQUE约束
ALTER TABLE ArticleTagsDROP CONSTRAINT UniqueRefence
为什么在撤销里只写了一个关联的UNIQUE约束,没有独立的?
独立的貌似要用 DROP CONSTRAINT
wbsdfwer,是数据库自己给他的一个特殊奇怪的id或者名字,当你在重复插入数据的时候,SQL会提示你xx约束blablabla~~~
望各位大神指点~~