http://q.hatena.ne.jp/1095586339

にあるような
・Aテーブル
・Bテーブル
・AとBのマッピングのテーブル
のような3テーブルがあったときに、
オススメのデータ挿入(insert)のコードをご紹介ください

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/08/13 18:41:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント60pt

トランザクションがあるのなら、

どの順番にINSERTしても一緒だと思いますが・・。

データの依存性をみて

親テーブルから子テーブルに処理するのがらくだと思います。

たぶん

A(親)

B(子)

マップ(親情報、子情報)

マップテーブルにINSERTするかどうか良く分からないので

一応あげてますが、必要ない場合は、いりません。

ある場合は、この順番だと思います。

id:yshkw

やりたかった処理の名称が「トランザクション」ということがわかり、

ほぼ解決しました。KUROXさん、ありがとうございました。

2007/08/13 18:40:59
  • id:yshkw
    ちょっと気になったので、追記します。
    >マップテーブルにINSERTするかどうか良く分からない
    とありますが、する場合しない場合は具体的にどんな状況ですか?
    そこに選択の余地があるということは、
    マップテーブルがなくともリレーションを記述する方法があるということかな、と思いました。
    もしあれば教えてくださるとうれしいです。
  • id:KUROX
    私の答えて適当ですね(^^; すいません。
    きちんとテーブルをイメージして書くと、
    以下のようになるかと思います。
    ------------------------------------
    たぶん、マップテーブルは必要だと思います。

    ・サイト台帳    Xテーブル
    ・カテゴリ台帳   Yテーブル
    ・関連付けテーブル Zテーブル

    カテゴリを追加するときは、YテーブルのみINSERT
    サイトを追加するときは、X,ZテーブルのみINSERT

  • id:yshkw
    いえいえ、こちらも闇雲な質問でしたので。
    お返事ありがとうございます。
    サイトもカテゴリも新規追加の時、
    3つのテーブルでトランザクションするのがベストということですね。
    使いこなしていないのですが、ビューか何かで一発でできるものがあるのかと思っての質問でした。
    楽したいんですよね^^;
  • id:KUROX
    VIEWに対してINSERTした経験がないので良く分かりません。

    ----------------------------------------------
    トランザクション
    http://dozo.matrix.jp/pear/index.php/PEAR/DB/autoCommit.html

    autoCommitを使わず、明示的にrollback, commitすれば
    良いと思われます。
    rollback, commitした時点で、
    自動的に次のトランザクションになります。
  • id:yshkw
    なるほど。これで本当に締め切ります
    質問終了後までいろいろありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません