2011-03-30 130 views
0

我有一個事件表,標籤表(字段:TAG_ID,標籤)和event_tag表(字段:事項標識,TAG_ID)。當一個人創建一個新事件時,他們可以添加通過INSERT IGNORE添加到標籤表中的標籤(以確保沒有重複)。INSERT IGNORE多行;如何獲得產生唯一的ID的

多個標籤可以一次添加,然後我需要在event_tag表中創建相應的記錄。

我需要的是幫助如何獲得所產生的TAG_ID的在INSERT後,忽略的問題;有時候新的記錄不會被添加,因爲它們已經存在於標籤數據庫中,因此不會返回任何標識。

我應該執行INSERT忽略到標籤數據庫,然後執行SELECT得到相應的TAG_ID對它們添加了標記,然後執行另一個插入event_tag表?

謝謝!

回答

0
mysql_insert_id

檢索由先前的查詢(通常INSERT)AUTO_INCREMENT列生成的ID。將只輸入一個(查詢),所以如果你使用這種方法,你將不得不一次執行插入1值。對於多行,從插入查詢中獲取第一個生成的AUTO_INCREMENT字段。

- 編輯澄清,重讀後可能有點令人困惑 -

+0

感謝您的評論。我意識到這一點,儘管它不幸沒有幫助。我需要一種在INSERT IGNORE之後爲每個標籤查找'tag_id'的方法;如果標籤已經在表格中,則不會返回標識。我還希望對所有標籤使用一個INSERT IGNORE,而不是爲每個標籤分別使用INSERT IGNORE。 – 2011-03-30 19:16:57

+0

那麼你可以遍歷它們,或者唯一的選擇我看到的是給'INSERT IGNORE'後,在相同的條件進行選擇,看看他們被分配什麼樣的價值觀。 – rayman86 2011-03-30 19:18:34

+0

我正在考慮做一個SELECT,但我不確定這是否被認爲是「正確的方式」。我想我正在尋找關於這種方法的第二意見。感謝您的輸入! – 2011-03-30 19:20:56