2015-12-22 25 views
0

在将表与唯一值组合在一起时遇到了一些麻烦。目前的设置,我有两个表,其中所有的意图和目的可以是一样的下面。我的问题是,我试图使用自动递增的值作为主键,因为数据拉取中的冗余,但由于它是针对两个表的,因此我想将字符串连接到自动递增的值,以便我的ID列将是: Boop1,Boop2,Boop3和BEEP1,Beep2,Beep3,而不是1,2,3两个表中,所以它们是有区别的,因此不会有重复的值,当我把在约束将str连接到用作主键的自动增量列

CREATE TABLE IF NOT EXISTS `beep`.`boop` (
`ID` INT NOT NULL AUTO_INCREMENT, 
`a` VARCHAR(15) NOT NULL, 
`b` VARCHAR(255) NOT NULL, 
`c` VARCHAR(50) NOT NULL, 
`d` VARCHAR(50) NOT NULL, 
PRIMARY KEY(`ID`)) 
ENGINE = InnoDB; 
 
LOAD DATA LOCAL INFILE 'blah.csv' 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES SET DCMID = CONCAT('DCM'+`DCMID`); 

在黑体代码是可选的,只是在那里尝试连接,我已经知道不工作

我意识到th是不能工作的,因为我的数据类型是INT,所以我需要做些什么来保持我的自动增量,同时区分

作为参考,我使用的是LOAD DATA LOCAL INFILE,而不是INSERT(和I不要认为mySQL工作台可以使用批量插入)。否则,我会批量插入并使用last_insert_id

我们的目标是即插即用的数据处理功能,以便我可以快速存档数据并运行查询以获取将来需要的数据。每行数据使用一个插入行我将是非常低效的

我以前使用了一个触发器的定界符函数,理论上这可以通过在加载数据infile后更改表来实现,但这需要SUPER权限我没有

就是我要求甚至有可能,或者我应该放弃,并找到解决方法,或尝试抓住超级priveleges并试图分隔符触发

+0

您无法输入自动增量值的值。这就是这个意思。您始终可以输入不同的唯一ID。为什么它甚至必须自动增加,如果你要控制什么进入? – Anton

+0

,因为我希望它自动增加一个用于区分的前缀。我想我也可能会让自己感到困惑,因为我使用的是复合键,最终导致重复值。我只是非常反感重复的价值观。 – JalexChen

+0

它会工作有另一个领域来填补你的连接部分的作用?类型的东西?或者甚至只是把它称为前缀.. – Anton

回答

0

我不知道你为什么会这样做,但你可以使用两个不同的索引。第一个是自动增量,并由MySQL填充。第二个是你的“前缀”键,由插入后调用的触发器创建,其中基于第一个键和所需的前缀更新列。