MySQL关键字constra_Mysql FOREIGN KEY Constraints

InnoDB 支持 foreign key constraints.

constraint definition in InnoDB looks like this:

[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

在InnoDB引擎中,

1.constranint [symbol] 中symbol如果指定必须唯一。

2.要建立外键,必须对外键和它参照的列上建立索引。

3.外键可以参照一列或几列,并且参照的列和外键可以是在不同的表中,也可以是同一个表。

可选择的外键约束种类有,RESTRICT | CASCADE | SET NULL | NO ACTION 四种。

外键约束对子表的含义:

如果在父表中找不到候选键,则不允许在子表上进行insert/update

外键约束对父表的含义:

在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,

父表的行为取决于:在定义子表的外键时指定的on update/on delete子句,

InnoDB支持4种方式, 分列如下

. cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录,

Both ON DELETE CASCADE and ON UPDATE CASCADE are supported.

Note:cascaded foreign key actions do not activate triggers . set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null

要注意子表的外键列不能设置为not null。

Both ON DELETE SET NULL and ON UPDATE SET NULL clauses are supported.

. Restrict方式

拒绝在父表上的删除或更新,此时如果我们将忽略其他定义在其上的约束如(ON DELETE or ON UPDATE clause)

. No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

这个是ANSI SQL-92标准,从mysql4.0.8开始支持

在Mysql 中 Restrict 和No action 的意义是一样的。

参见 Mysql Manual: Foreign Key constraint

分享到:

2011-05-18 22:48

浏览 1164

分类:数据库

评论

InnoDB 支持 foreign key constraints. constraint definition in InnoDB looks like this: [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 在InnoDB引擎中, 1.constranint [symbol] 中symbol如果指定必须唯一。 2.要建立外键,必须对外键和它参照的列上建立索引。 3.外键可以参照一列或几列,并且参照的列和外键可以是在不同的表中,也可以是同一个表。 可选择的外键约束种类有,RESTRICT | CASCADE | SET NULL | NO ACTION 四种。 外键约束对子表的含义: 如果在父表中找不到候选键,则不允许在子表上进行insert/update 外键约束对父表的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时, 父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持4种方式, 分列如下 . cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录, Both ON DELETE CASCADE and ON UPDATE CASCADE are supported. Note:cascaded foreign key actions do not activate triggers . set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能设置为not null。 Both ON DELETE SET NULL and ON UPDATE SET NULL clauses are supported. . Restrict方式 拒绝在父表上的删除或更新,此时如果我们将忽略其他定义在其上的约束如(ON DELETE or ON UPDATE clause) . No action方式 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 这个是ANSI SQL-92标准,从mysql4.0.8开始支持 在Mysql 中 Restrict 和No action 的意义是一样的。 参见 Mysql Manual: Foreign Key constraint 分享到: 2011-05-18 22:48 浏览 1164 分类:数据库 评论
经验分享 程序员 微信小程序 职场和发展