sqlserver删除有主外键的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver删除有主外键的数据相关的知识,希望对你有一定的参考价值。

我要说详细一点了.是这样..打个比方.目前有多张表,我假设3张吧.用户表,留言表,回复表.用户表中的一个用户在留言簿中表发的有信息(或在回复表中回复的有信息),那在留言表和回复表中肯定会有用户外键. 我现在想删除一个用户.但是不确定这个用户是否发表的有消息. 我应该怎么做? 是不是只有很笨的一张一张表的查询. 查询到这个用户的信息,就删除.然后再删除用户. 那如果这样,有更多的表就要查询更多次了.

参考技术A 在企业管理器里设置一下关联。具体的位置你自己找找,可视化的。很久没用sqlserver,忘记了。这样,就可以在删除主表时对从表可以有至少两种自动操作:1.直接删除子表中的相应记录。2.把子表的相应的记录的主键值换成默认值。具体的看你自己的选择。 参考技术B 不是删除有主键的这个,你的问题应该是这样的,你设置了住外键,然后你现在删除主键里面的内容是肯定不行的,你要先删除这个主键下面的那个表里面的内容,然后确保这个主键下面没得内容了,才可以删除到这个主键的。 参考技术C 先在每个有外键的表中执行一次删除就行了,然后再在主键表中执行一次删除 参考技术D 删除用户?用户建议别随便删除.你可以考虑在用户表给个用户状态的字段,把状态标识为不可用就行了.如果真要删的话,可能就用你刚说的那个办法吧.我没其他好的想法.呵呵..

数据库主外键

 

主键Primary key,唯一标示一个实体。是保证数据库的实体完整性,保证数据中数据的正确性和合理性,取值非空唯一。

 外键Foreign,是用来使表与表之间联系。用来保证数据库的参照完整性,外键的取值必须来自参照表参照列的值,可以为空也可不为空。

 

    外键的作用:

   保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

 

    主外键的关系结构:

 

1,一对一,不用引用主外键,把它们放一个表中即可

     例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可

2,一对多,引用主外键,‘一’相当于主键,‘多’即是引用主键的外键。

     例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;

3,多对多关系,需要创建一个表,表中需要两个字段,分别是引用,两个多对多字段主键的外键。
      

     例如:


学生表(学号,姓名,…………)主键:学号
课程表(课程号,课程名,…………)主键:课程号
一个学生能选多门课,一个课可以由多个学生选,即是多对多关系,
那么成绩表就是它们之间关系的体,
即引用成绩表(学号,课程号,成绩)。这里学号和课程号,分别是学生表和课程表中学号和课程号的外键

在我们现在这个阶段中,主要还是使用,主外键间的一对多的关系

 

下面一起来简单看一下大概建成的表结构

以上是关于sqlserver删除有主外键的数据的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server有主外键关系时添加删除数据

entity framework Code First 中,对有主外键关联数据怎么更新

如何修改数据库中主外键约束的数据?

SQLserver数据库中,在啥情况下删除数据不能成功?

记录sql server 的批量删除主外键的sql语句

批量删除MSSQL 中主外键约束