How do I rename a foreign key in mysql?

前端 未结 4 1971
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-14 15:27

We\'ve just completed a long-running migration on a large table, and ended up with the following constraint on our conversation_tags table:

CONSTRAINT `conve         


        
相关标签:
4条回答
  • 2020-12-14 15:32

    The feature does not seems to be available in mysql ALTER TABLE syntax.

    However it is supported for Oracle.

    0 讨论(0)
  • 2020-12-14 15:39

    Please refer to my answer in MySQL terminology "constraints" vs "foreign keys" difference? to understand why the constraint name was different than what you desired. However, MySQL doesnot have rename constraint feature and hence need to DROP and ADD FK with desired name . https://dev.mysql.com/doc/refman/5.5/en/alter-table.html

    0 讨论(0)
  • 2020-12-14 15:42

    From the documentation:

    Multiple ADD, ALTER, DROP, and CHANGE clauses are permitted in a single ALTER TABLE statement, separated by commas. This is a MySQL extension to standard SQL, which permits only one of each clause per ALTER TABLE statement.

    This way you can combine the drop and recreate into one query, and that should be faster than dropping the constraint and creating it in two queries:

    ALTER TABLE conversation_tags
    DROP FOREIGN KEY `conversation_tags_ibfk_1`,
    ADD CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`);
    
    0 讨论(0)
  • 2020-12-14 15:51

    I'm sorry, but constraints can only be dropped and re-attacched in mySQL

    0 讨论(0)
提交回复
热议问题