0

我有一个表,其中有一个带有SP varchar(10) NOT NULL. 我希望该列始终是唯一的,因此我在该列上创建了唯一索引。我的表架构如下:

CREATE TABLE IF NOT EXISTS `tblspmaster` (
  `CSN` bigint(20) NOT NULL AUTO_INCREMENT,
  `SP` varchar(10) NOT NULL,
  `FileImportedDate` date NOT NULL,
  `AMZFileName` varchar(50) NOT NULL,
  `CasperBatch` varchar(50) NOT NULL,
  `BatchProcessedDate` date NOT NULL,
  `ExpiryDate` date NOT NULL,
  `Region` varchar(50) NOT NULL,
  `FCCity` varchar(50) NOT NULL,
  `VendorID` int(11) NOT NULL,
  `LocationID` int(11) NOT NULL,
  PRIMARY KEY (`CSN`),
  UNIQUE KEY `SP` (`SP`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10000000000 ;

现在我希望如果有人试图插入重复记录,那么应该将该记录插入到辅助表名tblDuplicate中。

我已经解决了这个问题MySQL - ignore insert error: duplicate entry但我不确定不是

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

我可以将重复的行插入另一个表吗?

主表方案或索引列需要做哪些更改?

**注:数据将通过导入excel或csv文件插入,excel文件一般包含500k到800k条记录,但只有一列**

4

1 回答 1

1

我相信您想为此使用触发器。这是关于触发器的 MySQL 参考章节。

使用前插入触发器。在触发器中,检查该行是否重复(可能是 count(*),其中键列值 = 要插入的值)。如果该行是重复的,请在您的辅助表中执行插入操作。

于 2013-09-03T18:02:26.637 回答