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 分类:数据库 评论