sql server中的外键约束

server

sql server中建立外键约束有3中方式:
1.Enterprise Manager中,Tables,Design Table,设置Table的properties,
   可以建立constraint, reference key;
2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系。
3.直接用transact sql语句。

三个方法都需要先建立数据表。
-- 创建表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操作的。

时间: 2024-10-28 07:06:03

sql server中的外键约束的相关文章

mysql中关于外键约束的小问题

问题描述 mysql中关于外键约束的小问题 我想问,主表被references后不允许先删除记录,又说从表指定on delete cascade后删除主表记录时从表记录随之删除,你说这不矛盾吗?到底让不让删除? 例如下面这张图,student_table参考teacher_table,我却删不掉主表teacher_table 解决方案 嗯,这个问题已经解决啦,是我测试代码写错了,删除记录用del 我那个写成drop了 解决方案二: 你需要先解除外键约束 再删除表 解决方案三: MySQL外键约束

MySQL数据库中的外键约束详解

使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程.理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务器端脚本语言,就足以应付对MySQL表所需的各种操作了,尤其是当您使用了快速MyISAM数据库引擎的时候.但是,即使在最简单的情况下,事情也要比我们想象的要复杂得多.下面我们用一个典型的例子进行说明.假设您正在运行一个博客网站,您几乎天天更新,并且该站点允许访问者评论您的帖子. 在这种情况下,我们的数

详解MySQL中的外键约束问题_Mysql

使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程.理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务器端脚本语言,就足以应付对MySQL表所需的各种操作了,尤其是当您使用了快速MyISAM数据库引擎的时候.但是,即使在最简单的情况下,事情也要比我们想象的要复杂得多.下面我们用一个典型的例子进行说明.假设您正在运行一个博客网站,您几乎天天更新,并且该站点允许访问者评论您的帖子. MySQL外键约束条件

在DataSet中建立外键约束

程序可以直接拿来使用,运行通过. ---------------------------------------------------- testconstraint.aspx ---------------------------------------------------- <%@ Page Language="c#" debug="true" %> <%@ Import Namespace="System.Data"

sql server删除外键约束

  x先找出约束名字 然后删除它 我给个例子 --测试环境 --主表 create table test1(id int primary key not null,value int) insert test1 select 1,2 go --从表 create table test2(id int references test1(id),value int) go --第一步:找出test2表上的外键约束名字 --2000 exec sp_helpconstraint 'test2' --可

Mysql中增加与取消外键约束语句

语法 [CONSTRAINT [symbol]] FOREIGN KEY     [index_name] (index_col_name, ...)     REFERENCES tbl_name (index_col_name,...)     [ON DELETE reference_option]     [ON UPDATE reference_option] reference_option:     RESTRICT | CASCADE | SET NULL | NO ACTION

聊聊Oracle外键约束的几个操作选项

关系型数据库是以数据表和关系作为两大对象基础.数据表是以二维关系将数据组织在DBMS中,而关系建立数据表之间的关联,搭建现实对象模型.主外键是任何数据库系统都需存在的约束对象,从对象模型中的业务逻辑加以抽象,作为物理设计的一个部分在数据库中加以实现. Oracle外键是维护参照完整性的重要手段,大多数情况下的外键都是紧密关联关系.外键约束的作用,是保证字表某个字段取值全都与另一个数据表主键字段相对应.也就是说,只要外键约束存在并有效,就不允许无参照取值出现在字表列中.具体在Oracle数据库中,

讲解SQL与Oracle外键约束中的级联删除

最近软件系统中要删除一条记录,就要关联到同时删除好多张表,它们之间还存 在着约束关系.所以考虑到在创建表时加上约束关系,详细内容如下: SQL的外键约束可以实现级联删除与级联更新; ORACLE则只充许级联删除. SQL级联删除与级联更新使用格式: CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDAT

Sql Server中如何实现主键由字母数字组成并按照数字自动增长

在SQL SERVER 中如果我们想要使主键按照一定规则自动增长我们可以这样做: 这里我们新建一张研究表,里面有研究ID,研究人员姓名和研究医院. 我们使SicentificId 设为主键 并且从1开始每次递加1. 这里要更各位强调一下使用Identity 关键字的前提要求是 数据类型必须为 int ,decimal,bigint,smallint等数值类型. 但是很多时候只有一个数字编号并不能满足我们的要求, 这里笔者的需求就是编号要按照字母加数字的组合,并且字母固定且数字每次递增1. 那么我