1.通过图形界面的方式添加外键:

其中SNO和CNO在SC表中是外键,而在各自的表中则是主键;

同理添加CNO外键

2.通过写SQL语句实现添加外键

输入如下图中的SQL 语句:

--建立SC表中的SNO和CNO的外键约束

alter table SC

add constraint fk_SNO

foreign key (SNO) references S(SNO)

go

alter table SC

add constraint fk_CNO

foreign key (CNO) references C(CNO)

go

这里我们进行语句的解释:

alter table 表名(需要建立外键的表)

add constraint fk_CNO(外键列名)

foreign key (CNO) references C(CNO)(另外一个引用的主键名中的列名)

go

3.启用禁用外键约束

---启用or禁用指定表所有外键约束
alter table PUB_STRU  NOCHECK constraint all;
alter table PUB_STRU  CHECK constraint all;  ---生成启用or禁用指定表外键约束的sql
select 'ALTER TABLE ' + b.name + ' NOCHECK CONSTRAINT ' + a.name +';'  from sysobjects a ,sysobjects b where a.xtype ='f' and a.parent_obj = b.id and b.name='表名';
select 'ALTER TABLE ' + b.name + ' CHECK CONSTRAINT ' + a.name +';'  from sysobjects a ,sysobjects b where a.xtype ='f' and a.parent_obj = b.id and b.name='表名';  --生成的sql如下
ALTER TABLE PUB_STRU NOCHECK CONSTRAINT PUBSTRU_FK1;
ALTER TABLE PUB_STRU NOCHECK CONSTRAINT PUBSTRU_FK2;
ALTER TABLE PUB_STRU CHECK CONSTRAINT PUBSTRU_FK1;
ALTER TABLE PUB_STRU CHECK CONSTRAINT PUBSTRU_FK2;   --查看约束状态(查询字典表 sys.foreign_keys,该字典表开始出现于sqlserver2005及以上版本):
select name , is_disabled from sys.foreign_keys order by name;  --其中:name  : 外键约束名称   is_disabled : 是否已禁用例子:--删除外键
alter table AdItem drop constraint AdOrder_AdItem_FK1--增加外键
alter table AdItem
add constraint AdOrder_AdItem_FK1 foreign key (AI_nOrderNo) references AdOrder(AO_nOrderNo)--单个表的一个外键
alter table Student nocheck constraint FK__Student__SchoolN__4222D4EF
alter table Student check constraint FK__Student__SchoolN__4222D4EF  --单个表的所有外键
alter table Student nocheck constraint all
alter table Student check constraint all  --某个数据库的所有表
EXEC sp_MSforeachtable @command1='alter table ?  NOCHECK constraint all;'
EXEC sp_MSforeachtable @command1='alter table ?  CHECK constraint all;'

4.sp_MSforeachtable使用方法

sp_MSforeachtable使用方法
1)说明
系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从ms sql 6.5开始。
存放在SQL Server的MASTER数据库中。2)参数说明:
@command1 nvarchar(2000),          --第一条运行的SQL指令
@replacechar nchar(1) = N'?',      --指定的占位符号
@command2 nvarchar(2000)= null,    --第二条运行的SQL指令
@command3 nvarchar(2000)= null,    --第三条运行的SQL指令
@whereand nvarchar(2000)= null,    --可选条件来选择表
@precommand nvarchar(2000)= null, --执行指令前的操作(类似控件的触发前的操作)
@postcommand nvarchar(2000)= null --执行指令后的操作(类似控件的触发后的操作)3)举例
--统计数据库里每个表的详细情况
exec sp_MSforeachtable @command1="sp_spaceused '?'"
--获得每个表的记录数和容量:
EXEC sp_MSforeachtable @command1="print '?'",
@command2="sp_spaceused '?'",
@command3= "SELECT count(*) FROM ? "
--获得所有的数据库的存储空间:
EXEC sp_MSforeachdb   @command1="print '?'",
@command2="sp_spaceused "
--检查所有的数据库
EXEC sp_MSforeachdb   @command1="print '?'",
@command2="DBCC CHECKDB (?) "
--更新PUBS数据库中已t开头的所有表的统计:
EXEC sp_MSforeachtable @whereand="and name like 't%'",
@replacechar='*',
@precommand="print 'Updating Statistics.....' print ''",
@command1="print '*' update statistics * ",
@postcommand= "print''print 'Complete Update Statistics!'"
--删除当前数据库所有表中的数据
sp_MSforeachtable @command1='Delete from ?'
sp_MSforeachtable @command1 = "TRUNCATE TABLE ?"4)参数@whereand的用法
@whereand参数在存储过程中起到指令条件限制的作用,具体的写法如下:
@whereend,可以这么写 @whereand=' AND o.name in (''Table1'',''Table2'',.......)'
例如:我想更新Table1/Table2/Table3中NOTE列为NULL的值
sp_MSforeachtable @command1='Update ? Set NOTE='''' Where NOTE is NULL',@whereand=' AND o.name in (''Table1'',''Table2'',''Table3'')'5)"?"在存储过程的特殊用法,造就了这两个功能强大的存储过程
这里"?"的作用,相当于DOS命令中、以及我们在WINDOWS下搜索文件时的通配符的作用。

MSSQL外键约束以及sp_MSforeachtable使用方法相关推荐

  1. 数据库外键约束的几种方法及区别

    1.cascade级联模式 ,父表的操作,对应的子表关联的数据也跟着操作 2.district :严格模式(默认的),父表不能删除或更新一个已经被子表数据引用的记录. 3.set null:(置空模式 ...

  2. 数据库元数据数据字典查询_5_列出给定表的主键、外键约束

    列出给定表的主键.外键约束 需求描述 需求:查询出给定的表emp的外键约束信息. 解决方法:通过各个数据库里提供的与外键约束相关的数据字典进行查询. 注: 数据库数据集SQL脚本详见如下链接地址 员工 ...

  3. 数据库的主键约束、唯一约束、外键约束

    一.主键约束: 主键: 非空且唯一. 不能为 null 值, 不能出现重复的数据. 通常情况下, 一个表当中, 主键只能有一个 创建主键约束的两种方法及删除方法:(不需要加自增,就把AUTO_INCR ...

  4. mysql取消外码约束_MySQL 关闭子表的外键约束检察方法

    准备: 定义一个教师表.一个学生表:在学生表中引用教师表ID create table teachers(teacherID int not null auto_increment primary k ...

  5. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

  6. mysql启动和关闭外键约束的方法

    关闭外键约束,输入命令:SET FOREIGN_KEY_CHECKS=0; 启动外键约束,输入命令:SET FOREIGN_KEY_CHECKS=1; 查看当前是否有外键约束:SELECT  @@FO ...

  7. mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)

    在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot delete or update a parent row: a foreign key constraint f ...

  8. 关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值的解决方法...

    今天在编写C#程序时,VS提示了"未能启用约束.一行或多行中包含违反非空.唯一或外键约束的值."异常,没有慌乱,因为前几天遇到过这个异常,现在只有悔恨,为什么当时没有写一下博客记录 ...

  9. oracle添加外键约束的方法

    给表添加外键约束分两种情况,一种是刚建表的时候直接添加外键约束,另一种则是表已经创建好了再添加外键约束. 建表时添加外键约束: create table test_a(id number not nu ...

最新文章

  1. OpenAI解散机器人团队,曾试图造AGI机器人,创始人:最好的决定
  2. std的find和reverse_iterator联合使用
  3. Iphone代码创建视图
  4. 面试-重写基础功能函数
  5. 飞鸽传书 宣传单和电话说辞
  6. 一个顶级程序员要多久才能独自写完Win10代码?
  7. 如何做一个内心强大的人
  8. c 语言 00字符串 截断,c语言截断字符串
  9. 无向带权图的存储结构_每天5分钟用C#学习数据结构(27)图 Part 8
  10. Python基础教程(第2版•修订版)代码清单2-3 勘误
  11. laravel与thinkphp相比有哪些优势?他们之间的区别/优缺点在哪
  12. windows 性能监控--Perfmon主要指标
  13. java EE crm代码_基于jsp的小型企业CRM系统-JavaEE实现小型企业CRM系统 - java项目源码...
  14. 详细分析关于Ip地址计算的题目。
  15. 使用Synopsys VCS使用constraint遇到的一个奇怪问题
  16. DAU与GMV的差异,蛋鸡与肉鸡的区别
  17. Oracle HINT的常见用法
  18. JAVA 控制台式简单学生选课系统
  19. Posts Tagged ‘ionCube Loader is a Zend-Engine extension and not a module’
  20. android聊天界面对话气泡_聊天会话框气泡(示例代码)

热门文章

  1. Android闹钟APP
  2. Windows系统快捷键分类说明
  3. PIC单片机该怎么加密
  4. 从零开始学Python练习题(一)
  5. leetcode-位运算
  6. DirectX创建Windows窗口
  7. 码住这些视频配音软件,一键完成配音
  8. Hadoop、Yarn相关命令简介
  9. (二)requests爬取智能合约账户地址及其交易记录
  10. Highcharts实现走势图