0

私はusersテーブルを持っています。ユーザー数は100に制限する必要があります。つまり、ユーザー数が100に達すると、それ以上ユーザーを追加できなくなります。

私が最初に頭に浮かぶのは、最初に。によって返される行数を照会することselect * from usersです。返される行数が100未満の場合でも、ユーザーを追加できます。そうでなければ、私はもうできません。

それは私のニーズを満たすために2つのクエリを必要とします。たった1つのクエリでそれを取得する方法はありますか?私はこの声明を使用することに出くわしましたtriggerが、それが良い考えであるかどうか知りたいです。例としてコードスニペットを追加してください。

4

3 に答える 3

2

コメントが言うように、フロントエンドを通してこれを処理するための最良の方法。

ここに別のオプションがあります..

テーブルにIdentity列がある場合は、このテーブルに制約を追加できます。

ALTER TABLE <your_table>
ADD CONSTRAINT chk_users
CHECK( <identity_column> < 100)
于 2012-10-01T06:12:17.433 に答える
1

これは実際にはRDBMSを使用する通常の方法ではないため、簡単な方法はありません。

おそらく私がこれを行う方法は、ストアドプロシージャを記述し、挿入の代わりにそれを呼び出すことです。ストアドプロシージャは、基本的に2つのクエリソリューションをカプセル化しますが、データベース層にあります。 (編集-sqliteにsprocはありません)

ただし、ユーザー数を制限する必要がある理由を検討することが重要です。一度に100人のアクティブユーザーしか持てない状況の場合は、代わりにすべてのユーザーを保存するだけでなく、アクティブかどうかを示す状態も保存することを強くお勧めします。これにより、非アクティブなユーザーをアクティブに、またはその逆に移動する機会が得られます...これは1つのシナリオにすぎません。

于 2012-10-01T06:14:20.553 に答える
0

可能であれば、データベースにデータがクリーンであることを確認させることは常に良い考えだと思います。

データが適切であることを確認し、アプリケーションをチェックインするトリガーがある二重層アプローチも適切な場合があります。

于 2012-10-01T06:08:50.290 に答える