2012-04-06 80 views
3
我使用MySQL和JDBC ...

重複的條目下面是我的表定義批與生成的密鑰插入涉及獨特的

CREATE TABLE `A` (
    `id` int(255) NOT NULL AUTO_INCREMENT, 
    `type` varchar(255) NOT NULL, 
    `value` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `unq` (`type`(50),`value`(50)) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

在我是爲了使用聲明的那一刻批量插入行到與RETURN_GENERATED_KEYS選項的表,以便將id與其他表相關聯。

我希望有能力執行該操作,但是當/如果重複條目出現(&類型值相同的組合),以繼續交易像什麼也沒有發生,但仍然得到所生成的密鑰,如果重複條目發生檢索現有的密鑰。

感謝

+0

你應該張貼您的SQL。 – Randy 2012-04-06 12:45:33

回答

1

使用IGNORE關鍵字

INSET IGNORE .... 

Mysql

如果使用IGNORE關鍵詞,在執行 INSERT語句中,而不是視爲警告中出現的錯誤。例如,如果沒有 IGNORE,表中重複表中現有UNIQUE索引或PRIMARY KEY值的行會導致重複鍵錯誤,並且中止語句 。使用IGNORE時,該行仍未插入,但未發出錯誤 。

替代語法

INSERT ... ON DUPLICATE KEY UPDATE

+0

但它仍會檢索現有條目的ID嗎? – 2012-04-06 12:51:59