如何使用Propel生成SQL,在添加所有表后添加约束

时间:2014-03-26 16:39:22

标签: mysql constraints propel

是否可以从schema.xml生成schema.sql,以便在所有create table之后添加外键约束?我想按字母顺序对schema.xml中的表进行排序,但是有些表具有将在以后创建的表的外键。

所以不是这个输出:

CREATE TABLE t (
    id INT NOT NULL AUTO_INCREMENT,
    u_id INT NOT NULL,
    PRIMARY KEY(id),
    INDEX (u_id),
    FOREIGN KEY (u_id)
      REFERENCES u(id)
) ENGINE=INNODB;
CREATE TABLE u (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    PRIMARY KEY(id)
) ENGINE=INNODB;

我想得到这个:

CREATE TABLE t (
    id INT NOT NULL AUTO_INCREMENT,
    u_id INT NOT NULL,
    PRIMARY KEY(id),
    INDEX (u_id)
) ENGINE=INNODB;
CREATE TABLE u (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    PRIMARY KEY(id)
) ENGINE=INNODB;

ALTER TABLE t
    ADD FOREIGN KEY
    u_id (u_id)
    REFERENCES u (id);

1 个答案:

答案 0 :(得分:0)

对于MySQL,Propel在生成的SQL的顶部插入以下语句来创建表:

SET FOREIGN_KEY_CHECKS = 0;

这意味着定义表的顺序不应该成为问题。你得到的错误是什么?