如何更改复合主键以添加其他列

时间:2017-10-02 11:26:12

标签: mysql sql primary-key composite-primary-key alter

我们支持迁移,让我们称之为001_Create_organization_users.php两列,X,Y,它们都是一个组合PK:

<?php

namespace Fuel\Migrations;

class Create_organizations_users
{
    public function up()
    {
        \DBUtil::create_table('organizations_users', array(
            'X' => array('constraint' => 11, 'type' => 'int'),
            'Y' => array('constraint' => 11, 'type' => 'int')
        ), array('X', 'Y')); // Primary Key
    }
// Other functions
}

然后我使用不同的迁移向该表添加一列,让我们称之为002_Add_column_to_organization_users.php

<?php

namespace Fuel\Migrations;

class Add_column_to_organization_users.php
{
    public function up()
    {
        $fields = array(
            'Z' => array(
                'constraint' => 11, 'type' => 'int'),
        );

 \DBUtil::add_fields('organizations_users', $fields);
 //....
}

我可以以某种方式编辑该迁移,以便我可以添加列&#39; Z&#39;作为以前输入的键的主键,以便我的最终主键是X,Y,Z

1 个答案:

答案 0 :(得分:2)

由于您已经创建了PRIMARY KEY,因此您需要先删除它,然后使用新的列集创建新的。{/ p>

ALTER TABLE <table_name> DROP PRIMARY KEY, ADD PRIMARY KEY(X, Y, Z);