如果两列中的特定行值已存在,则Mysql INSERT IGNORE

时间:2013-08-24 14:12:30

标签: mysql insert

CurrencyAbbreviation | CurrencyRate | DateOfCurrencyRate

  AUD                |  1.1         |   2013-01-01 
  USD                |  1.1         |   2013-01-01 
  EUR                |  1.1         |   2013-01-01 

希望防止在同一日期插入相同的货币。

想要阻止这个

CurrencyAbbreviation | CurrencyRate | DateOfCurrencyRate

  AUD                |  1.1         |   2013-01-01 
  AUD                |  1.1         |   2013-01-01 

如果将CurrencyAbbreviationDateOfCurrencyRate设置为唯一,则例如无法插入AUD | 2013-01-02USD | 2013-01-03

尝试REPLACE进行检查,但结果相同,并认为REPLACE对情况不利。

现在看一些为每种货币创建单独表格的解决方案,但不是很好,因为有大约40多种货币和INSERT`SELECT``多个表浪费资源

请,建议解决方案。

思考,似乎需要创建包含货币和日期的其他列,并将列设置为唯一。目前看来这是我所知道的最佳解决方案

1 个答案:

答案 0 :(得分:3)

创建跨越这两列的UNIQUE索引

CREATE 
    UNIQUE INDEX currency_date 
    ON yourTableName (CurrencyAbbreviation, DateOfCurrencyRate)