我有一个表格,其中列名为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的记录,但只有一列**
答案 0 :(得分:1)
我相信你想要使用触发器。以下是关于triggers的MySQL参考章节。
使用before insert触发器。在触发器中,检查行是否重复(可能是count(*),其中键列值=要插入的值)。如果该行是重复的,请在辅助表中执行插入。