2015-12-22 20 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填充。第二個是你的「前綴」鍵,由插入後調用的觸發器創建,其中基於第一個鍵和所需的前綴更新列。