精华内容
下载资源
问答
  • Sqlserver 主外键约束

    千次阅读 2019-11-01 10:32:52
    Sqlserver 高级基础 约束整理上一篇 主外键约束 主外键约束 的目的 我感觉最有用的还是 级联删除 主键删除了 子键所有数据都被删除 设置 俩个表 一个TJ表 一个TS表 TS 为主表 里面存人物信息 TJ存分数信息 主键...

     Sqlserver 高级基础 约束整理 上一篇

    主外键约束

    主外键约束 的目的 我感觉最有用的还是 级联删除

    主键删除了  子键所有数据都被删除

    设置

    俩个表 一个TJ表  一个TS表 TS 为主表 里面存人物信息 TJ存分数信息 主键设置 不在阐述 在我上面博客里有

    右击子表的关联ID  点击关系

    还是 新增 改名 点击表与列规范

    选择主键 ID 和外键对应的键  一定要保证 俩个数据类型一致

    关系 选择 级联 这样删除的时候可以一起删除 一会会有效果

     

    设置完后 我们左侧 TJ 就会有 一个外键

     

    现在俩个标的关系已经建立 如果成绩表 我们录入一个不存在ID 就录入不进去

    现在表里只有一个ID为1 的张三 我们录入一个STID为2 在成绩表里

    不要管字段 都是我瞎写的   看值 没进去 把~ 我们改成1 就可以了

     

    现在我们 删除掉主表里的ID为1的值 看一下 子表的数据

    看一下 我并没有写删除TJ的数据 但是也被删除了

     

    在sqlserver 中 还有一个很便利的增加主外键的方式

    这就是 数据库关系图 和做E-R一样

    这里可以很方便的对 主外键进行绑定 删除 调整

     

    当然 怎么在代码里创建 可以右击我们刚才创建好的子健 看来代码

     

    USE [testDB62]
    GO
    
    ALTER TABLE [dbo].[TJ]  WITH CHECK ADD  CONSTRAINT [FK_TJ_TS] FOREIGN KEY([TSID])
    REFERENCES [dbo].[TS] ([ID])
    ON DELETE CASCADE
    GO
    
    ALTER TABLE [dbo].[TJ] CHECK CONSTRAINT [FK_TJ_TS]
    GO
    
    
    

     

    到这里 结束 ~

    展开全文
  • SQLServer中主外键是什么,以及主外键如何创建...此篇文章主要介绍通过SQL脚本来查看Sqlserver主外键关系:   SELECT f.name AS '关系名称',  OBJECT_NAME(f.parent_object_id) AS '表名称',  COL_NAME(...

      在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好;

    此篇文章主要介绍通过SQL脚本来查看Sqlserver中主外键关系:

      

    SELECT f.name AS '关系名称',
        OBJECT_NAME(f.parent_object_id) AS '表名称',
        COL_NAME(fc.parent_object_id,fc.parent_column_id) AS '字段名称',
        OBJECT_NAME (f.referenced_object_id) AS '关联表名称',
        COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS '关联字段名称'
    FROM sys.foreign_keys AS f
    INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id

     

    转载于:https://www.cnblogs.com/Rawls/p/10758543.html

    展开全文
  • SQLSERVER主外键的关联

    2014-07-14 10:15:50
    那就先看看SQL的技术帮助里的吧: FOREIGN KEY 约束 外键约束与主键约束或唯一约束一起在指定表中强制引用完整...在数据库关系图中,当创建从一个附加了主键约束或唯一约束的表到另一个表之间的关系时,外键约束

    那就先看看SQL的技术帮助里的吧:

    FOREIGN KEY 约束

    外键 约束与 主键约束 或 唯一约束 一起在指定表中强制引用完整性。例如,可以在 publishers 表的 title_id 列中放置一个外键约束,以保证这一列中的输入值与 titles title_id 列中的现有值匹配。

    在数据库关系图中,当创建从一个附加了主键约束或唯一约束的表到另一个表之间的关系时,外键约束将自动添加到指定的列上

    外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

    当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。

    例如,数据库 pubs 中的 titles 表与 publishers 表有链接,因为在书名和出版商之间存在逻辑联系。titles 表中的 pub_id 列与 publishers 表中的主键列相对应。titles 表中的 pub_id 列是到 publishers 表的外键。

    FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。

    说明 FOREIGN KEY 约束可引用同一数据库中的表或同一表(自引用表)内的列,例如,一个包含下面三列的雇员表:employee_numberemployee_namemanager_ employee_number。由于经理本身也是雇员,所以从 manager_employee_number 列到 employee_number 列存在外键关系。

    尽管 FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表 中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的 行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

    FOREIGN KEY 约束是索引的候选约束,其原因有以下两点:

    • 对 PRIMARY KEY 约束的更改可由相关表中的 FOREIGN KEY 约束校验。

    • 当在查询中组合来自相关表中的数据时,经常在联接 条件中使用外键列,方法是将一个表的 FOREIGN KEY 约束中的列与另一个表中的主键列或唯一键列匹配。索引使 Microsoft® SQL Server™ 2000 得以快速查找外键表中的相关数据。但是,创建索引不是必需的。即使没有在表间定义 PRIMARY KEY 或 FOREIGN KEY 约束,也可以对来自两个相关表中的数据进行组合,但两个表间的外键关系说明已用其键作为条件对其进行了优化,以便组合到查询中。

    以下是网上的一个小例子,

    -- 创建表author :
    CREATE TABLE [dbo].[author] (
    [ID] [bigint] NOT NULL ,
    [AuthorName] [char] (10) NULL ,
    [address] [char] (480) NULL ,
    [introduction] [ntext] NULL
    )

    -- 创建表myBBS:
    REATE TABLE [dbo].[myBBS] (
    [ID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [authorId] [bigint] NOT NULL ,
    [Title] [char] (40) NULL ,
    [Date_of_Created] [datetime] NULL ,
    [Abstract] [char] (480) NULL ,
    [Content] [ntext] NULL
    )

    设置表myBBS中的authorId为外键,参照author表的Id字段,直接使用transact sql语句,过程如下:
    --增加表mybbs(authorId)的外键约束FK_mybbs_author,表myBBS中的authorId受表author中的主键ID约束:
    BEGIN TRANSACTION
    alter table dbo.mybbs add constraint FK_mybbs_author
    foreign key (authorId)
    references dbo.author([id]) ON UPDATE CASCADE ON DELETE CASCADE

    --删除外键约束FK_mybbs_author:
    --alter table dbo.mybbs drop constraint FK_mybbs_author
    --rollback
    commit transaction

    上 面ON UPDATE CASCADE,ON DELETE CASCADE两个选项,指明以后author表的id字段有delete,update操作时,myBBS表中的id也会被级联删除或更新。如果没有选 中,是不可以对author表中已被myBBS表关联的id进行update或者delete操作的。
    展开全文
  • 当表之间有主外键关系时删除数据会被约束,添加、删除失败 解决办法,我们可以先把主外键关系的检查约束给关掉 → 然后删除数据 → 之后再把约束打开 查询出关掉所有外键约束的语句 SELECT 'ALTER TABLE ' + ...

    当表之间有主外键关系时删除数据会被约束,添加、删除失败

    解决办法,我们可以先把主外键关系的检查约束给关掉 → 然后删除数据 → 之后再把约束打开

    查询出关掉所有外键约束的语句

    SELECT 
    'ALTER TABLE ' + O.NAME + ' NOCHECK CONSTRAINT [' + F.NAME + '];' AS COMMAND 
    FROM 
    SYS.FOREIGN_KEYS F INNER JOIN SYS.ALL_OBJECTS O ON F.PARENT_OBJECT_ID = O.OBJECT_ID 
    WHERE O.TYPE = 'U' AND F.TYPE = 'F';

    查询出开启所有外键约束的语句,与上面的区别是将 NOCHECK 改为 CHECK

    SELECT 
    'ALTER TABLE ' + O.NAME + ' CHECK CONSTRAINT [' + F.NAME + '];' AS COMMAND 
    FROM 
    SYS.FOREIGN_KEYS F INNER JOIN SYS.ALL_OBJECTS O ON F.PARENT_OBJECT_ID = O.OBJECT_ID 
    WHERE O.TYPE = 'U' AND F.TYPE = 'F';

     

    转载于:https://www.cnblogs.com/ideacore/p/7614472.html

    展开全文
  • SQL Server设置外键

    千次阅读 2011-05-13 10:21:00
    SQL Server设置外键
  • SQLServer 更改有主外键关系表数据

    千次阅读 2019-02-27 09:30:17
    ALTER TABLE 表1  ADD CONSTRAINT 字段1  FOREIGN KEY (字段2) REFERENCES 表2 ON UPDATE CASCADE;  go   UPDATE 表2 SET 修改信息 where 条件  go  
  • SQL Server 2012 外键约束(定义外键、删除外键

    万次阅读 多人点赞 2019-04-21 20:00:26
    文章目录准备知识定义外键使用SSMS工具定义外键使用SQL方式定义外键删除外键使用SSMS工具删除外键方式一:在对象资源管理器中删除主键方式二:在表设计器中删除主键使用SQL方式删除外键 准备知识     外键...
  • SQL Server 添加主外键 字段自增长

    千次阅读 2018-11-24 19:28:58
    1.新建一个表[Student](先不考虑主外键 自增长) 可以使用SQL Server工具直接建立,右击’‘表’'选择新建表,如下: 也可以使用SQL语句直接建表,SQL语句如下: USE [BlogDemo] --使用BlogDemo数据库 ...
  • sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OBJECT_NAME(con.constid) '关系名' ,OBJECT_NAME(sf.fkeyid) '主键表' ,fcol.name '主键' ...
  • Sql Server创建外键失败

    2019-10-05 07:27:34
    已成功保存“PPR_BasicInformation”表“PPR_PS”表- 无法创建关系“FK_PPR_PS_PPR_BasicInformation”。 ALTER TABLE 语句与 FOREIGN KEY 约束"FK_PPR_PS_PPR_BasicInformation"冲突。该冲突发生于数据库"Test",表...
  • 公司用到了 sqlserver2008r2,一直对sqlserver研究不是很深,最近又遇到了外键关联以及更新数据的问题,这里整理一下,希望对以后有所帮助 问题:表中涉及到外键关联,针对该表中的外键做不了更新操作 解决办法:...
  • sql server 外键 In this article, we will seek an answer to an important question – “What is a foreign key in SQL Server?”. At the same time, we will give some seconder answers to this question. ...
  • 在建立主外键关系时,系统提示表"table2"中的列与现有的主键或UNIQUE约束不匹配 原因: 数据库表中只有一个主键,这个主键可以是多个列共同组成。所以table2中的两个主键就是一个联合主键。而建立主外键...
  • 如果为表指定了主键约束, 数据库引擎 将通过为键列自动创建唯一索引来强制数据的唯一性。 当在查询中使用主键时,此索引还允许对数据进行快速访问。 如果对多列定义了主键约束,则一列中的值可能会重复,但来自.....
  • sqlserver设置外键的问题遇到的问题 使用sql设置category表的主键为clothes表的外键。 在设置的时候,因为搞不清主键表和外键表的意思,折腾了半小时。 要设置的外键表里必须拥有和从表的一样的字段列,字段类型...
  • SQLServer2005 表T_Device: DeviceID(主键) TypeID(外键,引用到T_Type表的TypeID字段) 表T_Type: TypeID(主键) 如图: 在表设计器里面T_Device表的TypeID字段右键单击,弹出菜单上选择关系,如...
  • 简单的创建数据库的 SQL语句: use master go if exists(select * from sysdatabases where name='Test') begin select '该数据库已存在' drop database Test --如果该数据库已经存在,那么就删除它 end else ...
  • 问题:如何在SQL Server 2005中建立主外键关系?如何实现级联删除效果?解决方法:最好是在“数据库关系图”中建立,添加主表student(Id,Name,ClassId)和从表class(ClassId,ClassName)然后将从表class的主键Class...
  • SQL server添加主外键约束 sql语句

    万次阅读 2014-11-02 19:43:08
    ---添加外键约束(表stuInfo和从表stuMarks建立关系,关联字段为stuNo)   alter table 从表   add constraint 约束名  foreign key(关联字段) references 表(关联字段)  GO ...
  • SQL server 添加主外键约束

    万次阅读 2015-11-07 20:06:29
    ---添加外键约束(表stuInfo和从表stuMarks建立关系,关联字段为stuNo)   alter table 从表 add constraint 约束名  foreign key(关联字段) references 表(关联字段)   ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,176
精华内容 9,670
关键字:

sqlserver主外键关系