0

ユーザーが多くのアカウントを持っているとしましょう。したがって、user_id はアカウント テーブルにあります。すべてのユーザー アカウントを更新し、それらを 1 回の SQL 呼び出しで別のユーザーに提供したい場合、これを行う "レール" の方法はありますか? (executeSQL を実行せずに)

したがって、Joel には 1000 のアカウントがあり、Fred にはアカウントがありません。Joel は Fred にすべてのアカウントを渡したいと考えています。通常、joels アカウントを繰り返し処理して fred ユーザーに割り当てることができますが、1000 の SQL 呼び出しが発生します。

4

1 に答える 1

0
fred.accounts += joel.accounts

これにより、すべてのアカウントがすぐに移動joelされ、既存のアカウントに追加されますfred。「即時」とは、SQLがすぐに更新を実行することを意味します。移動中のレコードを追加で保存する必要はありません。

fredアカウントがない場合でも問題ありませんが、同じように機能します。アカウントの空のリストにアカウントjoelを追加するだけです。fred

これは、「1対多」と「多対多」の両方の関係で機能します。

1対多の状況では、これは、以前に所有していたすべてのアカウントuser_idのテーブルのフィールドを変更することで行われます。accountsjoel

多対多の状況(アカウントが複数のユーザーによって共有される可能性がある)では、0人以上の他のユーザーと共有するすべてのアカウントuser_idの結合テーブル(おそらく呼ばれる)のフィールドを変更するだけのように見えます。これにより、と共有しているアカウントが効果的に置き換えられます。アカウントの他のすべての共同所有者は影響を受けていないようです。accounts_usersjoeljoelfred

于 2012-09-24T19:32:22.943 に答える