阻止表中出现重复项——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
阻止表中出现重复项——SQL UNIQUE 约束相关推荐
- mysql删除数据表中冗余数据_删除MySQL数据表中的重复项
常常遇到这样去重的问题,或者由于数据库平时每日添加之后,难得有重复,数据变得冗余,这时就需要对数据表进行清理,去除重复的数据. 但是,所谓重复,有几层意思,一种是整行重复,每列的值都相同的,另一种是一 ...
- Excel表中删除重复项的详细操作
1,选中自己要删除重复项的区域, 2.点击工具栏 ->数据-->删除重复项. 3.此时会弹出对话框,选择""扩展选定区域"". 4.此时会弹出一个 ...
- 【指导】如何在 excel 数据表中去重重复项计数?
如题,默认的 excel 数据透视表的值选项里只有计数.求和等简单直接的计算方法,但是如果是重复值计数,就爱莫能助了. 网上有很多方法,辅助列.sql.PowerPivot插件,都太麻烦了,我还是比较 ...
- SQLServer 2005删除无主键表中的重复项
先把表拷到一个临时表中,然后保留表结构删除其内容,把临时表中的内容拷回来,删除临时表. select distinct * into tmp from test trunc ...
- 利用T-SQL处理SQL Server数据库表中的重复行
Duplicate rows in a SQL Server database table can become a problem. We will see how we can find and ...
- sql删除表中重复记录_SQL从SQL表中删除重复行的不同方法
sql删除表中重复记录 This article explains the process of performing SQL delete activity for duplicate rows f ...
- R语言unique函数计算数据对象(vector、dataframe)的unique独特值:unique函数从vector向量、dataframe中删除重复项、删除dataframe重复行
R语言unique函数计算数据对象(vector.dataframe)的unique独特值:unique函数从vector向量.dataframe中删除重复项.删除dataframe重复行 目录
- 如何删除表中的重复记录?等等常用SQL语句的积累
1.如何删除表中的重复记录?(这里指记录的每个字段都要相同) select distinct * into #temp from tab delete tab insert tab select * ...
- 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...
最新文章
- python-range用法
- 如何在eclipse中修改jsp默认编码
- java web微服务是什么_java微服务是什么
- win7下删除提示没权限删除文件的方法
- CSDN-Markdown基本语法
- java8-4 多态的练习以及题目
- 教师计算机网络培训工作总结,教师培训工作的自我总结
- python精确计时_PYTHON在WINDOWS下高精度计时的体会
- Restic 跨平台加密备份工具
- tts文字转语音_Android文字转语音(TTS)
- EnableViewState=false无效
- cascading基本概念
- 设计模式 — 简单工厂模式(Simple Factory)
- 苹果备份删除有影响吗_苹果官网崩了,对手机的销售有什么影响吗?
- 如何让360浏览器打开网页默认为“极速模式”
- 夜神模拟器之burp抓包
- Material Design系列之BottomNavigationView详解
- vue版本的仿京东放大镜代码还有原生js版本的。(组件封装
- 微信3d小游戏(three)-逻辑设计与场景添加
- Exchange Server 2010部署(一)部署Windows Server 2008 R2域控制器
热门文章
- UOJ228:基础数据结构练习题——题解
- javascript 错误与调试
- Rhel7 Ldap为本地用户认证方式,设置域、服务器位置和下载key
- 兼容IE,chrome 等所有浏览器 回到顶部代码
- http://www.cnblogs.com/qtqq/p/5271164.html
- pymysql的相关操作
- SQL小技巧系列 --- 行转列合并
- 【直播资料下载】Python 系列直播——深入Python与日志服务,玩转大规模数据分析处理实战第二讲...
- Springsecurity之AccessDecisionManager
- final 修饰方法参数