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

    望各位大神指点~~

  • 相关阅读:
    第四十一节 jQuery之bootstrap文档
    第四十节 jQuery之bootstrap简介
    Redis 如何实现查询附近的距离
    线上日志快速定位-grep
    Java字符串操作工具类
    JAVA批量插入数据操作+事务提交
    java开发需求中技术常见名称
    MySQL Binlog--MIXED模式下数据更新
    MySQL Replication--修改主键为NULL导致的异常
    MySQL Replication--复制异常1
  • 原文地址:https://www.cnblogs.com/apriljq/p/3131085.html
Copyright © 2020-2023  润新知