MySQL创建唯一列

时间:2017-06-11 15:02:21

标签: mysql sql

我的数据如下:

+------------+------------+-----------+
|   Date1    |   Date2    | CompanyID |
+------------+------------+-----------+
| 2017-01-01 | 2017-01-02 |         1 |
| 2017-02-01 | 2017-02-02 |         1 |
| 2017-01-01 | 2017-01-02 |         2 |
| 2017-01-21 | 2017-01-23 |         1 |
| 2017-01-21 | 2017-01-23 |         2 |
| 2017-11-21 | 2017-11-22 |         1 |
+------------+------------+-----------+

我想在MySQL中使用这些数据创建一个表,但是我需要创建一个唯一的密钥,因为两个CompanyID的某些数据是相同的。我在考虑将Date1CompanyID组合在一起:

+--------------+------------+------------+-----------+
|     Key      |   Date1    |   Date2    | CompanyID |
+--------------+------------+------------+-----------+
| 2017-01-01-1 | 2017-01-01 | 2017-01-02 |         1 |
| 2017-02-01-1 | 2017-02-01 | 2017-02-02 |         1 |
| 2016-01-01-2 | 2016-01-01 | 2016-01-02 |         2 |
| 2017-01-21-1 | 2017-01-21 | 2017-01-23 |         1 |
| 2017-04-10-2 | 2017-04-10 | 2017-04-11 |         2 |
| 2017-11-21-1 | 2017-11-21 | 2017-11-22 |         1 |
+--------------+------------+------------+-----------+

这是一个坏主意,为什么?是否有某种方法将Date1 + CompanyIDKey相关联,以便在Date1CompanyID更改时自动更改密钥?

2 个答案:

答案 0 :(得分:1)

您不需要单独的键列。您可以在表格中添加UNIQUE KEY (CompanyID, Date1)以防止重复。或PRIMARY KEY (CompanyID, Date1)如果您希望它成为您的主键。

答案 1 :(得分:0)

这是一个糟糕的主意,因为如果您不止一次拥有相同的日期和相同的公司ID,那么您的密钥将不会是唯一的。只需添加自动增量密钥。