2011-02-09 10 views
4

私はレールアプリケーションでMySQLを使用しています。私はユーザーテーブル(ID、名前などの標準的なもの)と本のテーブル(ID、user_id、タイトルなど)を持っています。MySQLのスコープ付きAUTO_INCREMENT?

私はidのように自動インクリメントする必要がありますが、user_idでスコープされる列(user_book_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ソリューションでは、企業が多くのケースを持つ可能性があり、すべての会社で1から始まり(増分を維持する)case_idが必要な場合があります。このようなものをデータベースレベルでどのように実装しますか? – unamashana

0

あなた自身で実装することができます。最後のuser_book_idの値をusersテーブルの新しい列に配置し、書籍に挿入するときは、ユーザーの新しい列の値を取り出して+1します。

+0

確かにこのようにすることができますが、データベースレベルでこれを行う方法があるのだろうかと思っていました。外部キーでスコープされた自動インクリメントが表示されている場合 – unamashana

+0

はい、確かです。しかし、必要なfuncitonalityはMySQLにはありません。 –

関連する問題