MYSQL 基于其他列的唯一列
MYSQL unique column based on other column
我有一个脚本,我使用 LOAD DATA INFILE REPLACE INTO 命令将 CSV 文件加载到 table。
文件来自不同的 "stores",所有不同的商店都进入这个 table。
我的问题是如何将两列组合起来,然后变成唯一的列,或者您可能有其他想法。
storeid
= 每一行都不会是唯一的
code
= 每个商店 id 都是唯一的
目标是将 csv 文件加载到 table 中,并在发生更改时根据商店 ID 和代码更新行。
当我为每个商店使用不同的数据库并将 code
作为唯一时,这一切都有效,但现在我想将所有商店都放在同一个数据库中。
正在合并列,例如1+123 = 1123 = new unique 最好的方法?
提前致谢
根据http://dev.mysql.com/doc/refman/5.7/en/load-data.html:
If you specify REPLACE, input rows replace existing rows.
In other words, rows that have the same value for a primary key or unique index as an existing row.
您应该在您的列上创建唯一索引:
CREATE UNIQUE INDEX name_of_the_index ON table_name (storeid, code);
这两列的组合主键也可以完成这项工作。
我最终使用了两个主键作为
CREATE TABLE stock(
storeid int,
code int,
PRIMARY KEY (storeid , code)
);
它结合了两个字段,使它们成为一个独一无二的字段,似乎对我的测试有效。
我有一个脚本,我使用 LOAD DATA INFILE REPLACE INTO 命令将 CSV 文件加载到 table。
文件来自不同的 "stores",所有不同的商店都进入这个 table。
我的问题是如何将两列组合起来,然后变成唯一的列,或者您可能有其他想法。
storeid
= 每一行都不会是唯一的
code
= 每个商店 id 都是唯一的
目标是将 csv 文件加载到 table 中,并在发生更改时根据商店 ID 和代码更新行。
当我为每个商店使用不同的数据库并将 code
作为唯一时,这一切都有效,但现在我想将所有商店都放在同一个数据库中。
正在合并列,例如1+123 = 1123 = new unique 最好的方法?
提前致谢
根据http://dev.mysql.com/doc/refman/5.7/en/load-data.html:
If you specify REPLACE, input rows replace existing rows.
In other words, rows that have the same value for a primary key or unique index as an existing row.
您应该在您的列上创建唯一索引:
CREATE UNIQUE INDEX name_of_the_index ON table_name (storeid, code);
这两列的组合主键也可以完成这项工作。
我最终使用了两个主键作为
CREATE TABLE stock(
storeid int,
code int,
PRIMARY KEY (storeid , code)
);
它结合了两个字段,使它们成为一个独一无二的字段,似乎对我的测试有效。