2011-02-09 36 views
4

我在rails應用程序中使用MySQL。我有一個用戶表(標準的東西,如id,名稱等)和書籍表(再次與id,user_id和標題等)。MySQL中的作用域AUTO_INCREMENT?

我想有一個列(讓我們稱之爲user_book_id),應該像ID一樣自動增加,但範圍與user_id。就像id一樣,即使在books表中刪除了一條記錄,也不應該重用user_book_id。一個例子:

User 

id | Name 
------------ 
1 | Jerry 
2 | Newman 

Book 

id | user_id | user_book_id | Title 
----------------------------------- 
1 | 1  | 1   | Jerry's First Book 
2 | 1  | 2   | Jerry's Second Book 
3 | 2  | 1   | Newman's First Book 
4 | 1  | 3   | Jerry's Third Book 

有沒有辦法在MySQL中做到這一點?我搜查了但找不到任何東西。

感謝, Prateek

回答

1

沒有,沒有這樣的事情存在。要麼允許auto_increment在表中是唯一的,要麼你必須自己實現它。

+1

這不是一種常見的情況嗎?例如,在一個SaaS解決方案中,一家公司可能有很多案例,您可能需要一個case_id,從每個公司的1開始(並且一直遞增)。你如何在數據庫級實現這樣的事情? – unamashana

0

您可以自己實現它,假設您將最後一個user_book_id值放入users表的新列中,然後插入書籍時,從用戶的新列中獲取值並增加+1。

+0

可以這樣做,但我想知道是否有辦法在數據庫級別執行此操作。如果你看到它的自動增量範圍在外鍵 – unamashana

+0

是的,當然。但是你需要的功能在MySQL中不存在。 –