alter table语句将副本插入另一个表

时间:2013-09-03 17:18:42

标签: mysql database

我有一个表格,其中列名为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的记录,但只有一列**

1 个答案:

答案 0 :(得分:1)

我相信你想要使用触发器。以下是关于triggers的MySQL参考章节。

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