mysql外键约束
你指定ON DELETE CASCADE?当你创建你的FK?不知道您正在使用的发动机无论是
例如
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
这里更多http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html您正在使用哪个存储引擎
这两个表必须是InnoDB表,并且innodb的性能不及myisam – 2010-01-24 16:02:06
其实我已经创建了表格,现在我有数据了。 您是否意味着我需要重新创建所有设置外键的表。 – ASD 2010-01-24 16:02:44
外键约束在那里。除非存储引擎设置为InnoDB,否则MySQL不会强制执行它们。您可以执行“ALTER TABLE [table name] ENGINE = InnoDB”(http://dev.mysql.com/doc/refman/5.1/en/alter-table.html),而不是重新创建表。 – 2010-01-24 16:12:47
的MySQL不为你做它,
你需要删除触发器例如之前删除操作
声明触发:
http://www.java2s.com/Code/Oracle/Trigger/Createabeforedeletetrigger.htm
? “对于除InnoDB以外的存储引擎,MySQL服务器会分析CREATE TABLE语句中的FOREIGN KEY语法,但不会使用或存储它。” (MySQL参考手册http://dev.mysql.com/doc/refman/5.1/en/ansi-diff-foreign-keys.html) – 2010-01-24 15:57:52
storge引擎是ENGINE = MyISAM – ASD 2010-01-24 16:01:37