首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改表状态以将重复插入到另一个表中

问更改表状态以将重复插入到另一个表中
EN

Stack Overflow用户
提问于 2013-09-03 17:18:42
回答 1查看 100关注 0票数 0

我有一个表,其中有一个带有SP varchar(10) NOT NULL的列名。我希望那个列总是唯一的,所以我在该列上创建了唯一的索引。我的表模式如下:

代码语言:javascript
复制
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 -忽略插入错误:重复条目,但我不确定,而不是

代码语言:javascript
复制
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 18:02:26

我相信你想用扳机来解决这个问题。这是关于MySQL的触发器参考一章。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18597988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档