如何给外键指定一个特定的名称?

时间:2015-10-18 13:14:00

标签: mysql symfony doctrine-orm

对于我们的Mysql数据库,我在log.orm.yml文件中的修改将生成此SQL查询:

ALTER TABLE te_journal_log ADD 
    user_id INT UNSIGNED DEFAULT NULL;
ALTER TABLE te_journal_log ADD 
    CONSTRAINT FK_1E6EB7B7A76ED395 FOREIGN KEY (user_id) 
    REFERENCES te_user_usr (id);
CREATE INDEX IDX_1E6EB7B7A76ED395 ON te_journal_log (user_id);

完美无缺。

但是;-)由于我们的命名政策,我正在搜索如何通过{{替换约束的名称FK_1E6EB7B7A76ED395和索引的名称IDX_1E6EB7B7A76ED395 1}}和fk_log_user。我在文档中找不到任何内容。

我查看了源代码,尤其是the 1088th line of AbstractPlatform.php file但它并没有帮我强制使用我的外键名称。你能帮帮我吗?

亚历山大

log.orm.yml文件中的修改:

i3_log

1 个答案:

答案 0 :(得分:1)

我认为没有办法重命名约束。您可以删除它并重新创建它。索引也一样:

alter table te_journal_log drop constraint FK_1E6EB7B7A76ED395;

alter table te_journal_log 
    add constraint fc_tel_userid foreign key (user_id) references te_user_usr (id);

drop index IDX_1E6EB7B7A76ED395;

create index idx_tel_userid on te_journal_log(user_id);

注意:将来,您可以在create tablecreate index语句中提供所需的名称。这是直接在SQL中编写这些语句的一个很好的理由。