2016-05-27 2 views
1

MySQLの最大行数を同じ "user"値に制限する方法を教えてください。例えばMySQLは同じ "user"値の最大行数を制限します

、I列

id | user | data 

持つテーブルを持っていると私は、最大の行は、各ユーザ(同じ「ユーザ」値)を5までカウント制限したいです。

start transaction 
insert row with user = "XXX" 
count rows, where user = "XXX" 
if count < 5 commit else rollback 

は私のアイデアが良いですか、別の(より良い)ソリューションも存在します。

私の考えは、トランザクション(InnoDBの)を使用することですか?私はそれは大丈夫だと思います

答えて

1

は、あなたは

select count(1) from table where user='XXX' 

を作成し、挿入を実行する前に、カウントをチェックすることもできます。

+0

いいえ、**は挿入後に数を確認する必要があります**。別の挿入プロセスは私のカウントと挿入の間にある可能性があります。 – adminko

+0

あなたはあなたが取引をしていると述べました。だから矛盾が起きれば、コミットすることはできません。 – Hooch

+0

実際のカウント値(行数)はトランザクション中に増加することがありますので、カウント値は4ですが、実際のカウント数は5です...したがって、挿入後にカウントする必要があります。 – adminko

関連する問題