网站建设有没有,深圳seo专家,山西省住房建设厅网站下载,有几个网站能在百度做推广在MySQL中#xff0c;InnoDB引擎类型的表支持了外键约束。外键的使用条件#xff1a;1.两个表必须是InnoDB表#xff0c;MyISAM表暂时不支持外键(据说以后的版本有可能支持#xff0c;但至少目前不支持)#xff1b;2.外键列必须建立了索引#xff0c;MySQL 4.1.2以后的版…在MySQL中InnoDB引擎类型的表支持了外键约束。外键的使用条件1.两个表必须是InnoDB表MyISAM表暂时不支持外键(据说以后的版本有可能支持但至少目前不支持)2.外键列必须建立了索引MySQL 4.1.2以后的版本在建立外键时会自动创建索引但如果在较早的版本则需要显示建立3.外键关系的两个表的列必须是数据类型相似也就是可以相互转换类型的列比如int和tinyint可以而int和char则不可以外键的好处可以使得两张表关联保证数据的一致性和实现一些级联操作外键的定义语法代码如下:[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …)REFERENCES tbl_name (index_col_name, …)[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}][ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用如果不指定CONSTRAINT symbolMYSQL会自动生成一个名字。ON DELETE、ON UPDATE表示事件触发限制可设参数RESTRICT(限制外表中的外键改动)CASCADE(跟随外键改动)SET NULL(设空值)SET DEFAULT(设默认值)NO ACTION(无动作默认的)如果子表试图创建一个在父表中不存在的外键值InnoDB会拒绝任何INSERT或UPDATE操作。如果父表试图UPDATE或者DELETE任何子表中存在或匹配的外键值最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。InnoDB支持5种不同的动作如果没有指定ON DELETE或者ON UPDATE默认的动作为RESTRICT:1. CASCADE: 从父表中删除或更新对应的行同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。2. SET NULL: 从父表中删除或更新对应的行同时将子表中的外键列设为空。注意这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。3. NO ACTION: InnoDB拒绝删除或者更新父表。4. RESTRICT: 拒绝删除或者更新父表。指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。5. SET DEFAULT: InnoDB目前不支持。外键约束使用最多的两种情况无外乎1)父表更新时子表也更新父表删除时如果子表有匹配的项删除失败2)父表更新时子表也更新父表删除时子表匹配的项也删除。前一种情况在外键定义中我们使用ON UPDATE CASCADE ON DELETE RESTRICT后一种情况可以使用ON UPDATE CASCADE ON DELETE CASCADE。InnoDB允许你使用ALTER TABLE在一个已经存在的表上增加一个新的外键:ALTER TABLE tbl_nameADD [CONSTRAINT [symbol]] FOREIGN KEY[index_name] (index_col_name, ...)REFERENCES tbl_name (index_col_name,...)[ON DELETE reference_option][ON UPDATE reference_option]InnoDB也支持使用ALTER TABLE来删除外键ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;