显示连接的复合主键

时间:2015-03-10 13:47:38

标签: mysql composite-primary-key

我正在设计一个用于获取唯一ID的数据库。通过从其他表中获取id

,“main”表将具有复合主键

作为示例,请考虑下表说明问题:

----------------------------------------------------------------
| PK_main_table| FK1 | FK2 | ...                               |
----------------------------------------------------------------
| 102_245      | 102 | 245 | ...                               |
| 102_984      | 102 | 984 | ...                               |
| 98_298       | 98  | 298 | ...                               |
| 564_114      | 564 | 114 | ...                               |
----------------------------------------------------------------

所以我将写下以下内容:

CREATE TABLE main_table
(
`id` INT NOT NULL AUTO_INCREMENT,
FK1 int(5),
FK2 int(5),
...
primary key(`FK1`, `_`, `FK2`, ...)
);

请注意,所有外键都有唯一的ID,并且可以多次找到相同的外键(如您所见,FK1 ='102')。

我对关系数据库有一个很好的理解,但远非专家甚至是有经验的用户。

我的问题是:如何获得主键?我希望我可以做一个SELECT [那里],其中FK1 ='98',结果得到'98_298'。

1 个答案:

答案 0 :(得分:0)

我的解决方案是添加一个新字段" primary_key"使用以下代码添加带有触发器的填充:

select 
id,group_concat(concat(`FK1`,':',`FK2`) separator ',')
as Result from main_table group by id

然后我必须

  

选择main_table.primary_key,其中[我的条件]

我不知道它是否是最佳解决方案,但它的效果非常好。