ForeignKeyConstraint 外键约束的使用及作用的学习[转]

原文链接

   da.SelectCommand.CommandText="select au_id,au_fname,au_lname from authors";
    da.Fill(ds,"Author");
    da.SelectCommand.CommandText="select au_id,title_id from titleauthor";
    da.Fill(ds,"TitleAuthor");
    da.SelectCommand.CommandText="select title_id,title from titles";
    da.Fill(ds,"Titles");
    //
    ds.Tables["Titles"].Columns["title_id"].Unique=true;
    ds.Tables["Titles"].Columns["title_id"].AllowDBNull=false;
    ds.Tables["Titles"].PrimaryKey=new DataColumn[]{ds.Tables["Titles"].Columns["title_id"]};
    //
    ds.Tables["Author"].Columns["au_id"].Unique=true;
    ds.Tables["Author"].Columns["au_id"].AllowDBNull=false;
    ds.Tables["Author"].PrimaryKey=new DataColumn[]{ds.Tables["Author"].Columns["au_id"]};
    //
    ds.Tables["TitleAuthor"].PrimaryKey=new DataColumn[]{ds.Tables["TitleAuthor"].Columns["au_id"],
     ds.Tables["TitleAuthor"].Columns["title_id"]};
    //定义约束
    ForeignKeyConstraint fk1=new ForeignKeyConstraint("authorstitleauthor",ds.Tables["Author"].Columns["au_id"],
     ds.Tables["TitleAuthor"].Columns["au_id"]);
    ds.Tables["TitleAuthor"].Constraints.Add(fk1);
    ForeignKeyConstraint fk2=new ForeignKeyConstraint(
     "titlestitleauthor",ds.Tables["Titles"].Columns["title_id"],
     ds.Tables["TitleAuthor"].Columns["title_id"]);
    ds.Tables["TitleAuthor"].Constraints.Add(fk2);
    this.dataGrid1.DataSource=ds;
    this.dataGrid1.DataMember="TitleAuthor";

这样设定外键之后,在DataGrid上编辑TitleAuthor中的记录时如果编辑的记录不在Title和Author中时将后无法更新和新增.

时间: 2024-10-15 07:10:00

ForeignKeyConstraint 外键约束的使用及作用的学习[转]的相关文章

外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)

1.1.1 外键约束 Create database day16; Use day16; 创建部门表: create table dept( did int primary key auto_increment, dname varchar(20) ); insert into dept values (null,'研发部'); insert into dept values (null,'教研部'); insert into dept values (null,'市场部'); 创建员工表: c

mysql的外键约束

创建表格: #首先登录mysql mysql -uroot 打开一个数据库 mysql>use db1; 创建一个父表,我们命名为province, mysql> create table province ( -> id smallint auto_increment key, -> name varchar(10) NOT NULL -> ); 创建一个子表,命名为student,其中其pid引用来自province的id, mysql> create table

MYSQL外键约束的参照操作

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松.这里以MySQL为例,总结一下3种外键约束方式的区别和联系. 这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组. 首先创建用户组表: 创建用户组表 create table t_group ( id int not null, name varcha

MySQL外键约束

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表. 外键是用来保证数据的完整性和一致性,通过外键的检查而使不正确的删除,插入操作失败. 不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松. 触发器同样也能完成修改或者删除操作的级联操作,2者的区别如下(自己的理解): 1.触发器会更耗资源,对原表的操作和对从表的级联操作是在一个事务中的. 2.表的数据量不大,结构不复杂时优先考虑外键约束. 3.触发器比外键约

MySQL外键约束的使用

软件工程试验二中要求建立如下数据库: 使用MySQL建立一个“图书数据库“ BookDB,包含两张表:– Book {ISBN (PK), Title, AuthorID (FK), Publisher, PublishDate, Price}– Author {AuthorID (PK), Name, Age, Country} 其中FK是 foreign key的意思,即给Book数据表加上一个外键约束,下面先解释下外键约束的作用. 定义外键主要是为了维护关系数据库的完整性,使相关数据表之间

【转】MySQL外键约束On Delete、On Update各取值的含义

转载地址:http://hi.baidu.com/jxqlovejava/item/3d2cc5b5d689917c244b0920 ? 先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性. 当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除. 当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录

SQL的主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

SQL的主键和外键约束详解及用途

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄.身份证号是唯一能确