- 締切済み
複数テーブルへの同時INSERT
ASPとAccessを使用して書籍管理システムを作成する勉強をしています。 以下のようなテーブルがあったとします。 HTMLの書籍管理システムのフォームから、ISBN,Title,Categoryを入力させて送信すると 2つのテーブルに対して同時に登録するのですが、 複数のDBに対してどのようにINSERT文をかけばよいのか、またどのように同期をとればよいのか悩んでおります。 table AとBのBookIDはリレーションシップになっております。 どなたかお知恵を拝借できないでしょうか。 [table A] BookID ISBN Title [table B] BookID Category
- oen
- お礼率58% (7/12)
- Microsoft ASP
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
テーブルA、Bが分かれている理由はなんなのだろうか。まぁそれはおいておいて。 ASPなど、動的ページシステムでDB操作を行うにはトランザクションが欠かせない。例えばADOを使いSQL Serverに接続している場合は、 adoConn.BeginTrans adoConn.Execute "insert into A ・・・" adoConn.Execute "insert into B ・・・" adoConn.CommitTrans などとなる。AとBのリレーションシップというのも良く分からない。A.BoolIDがB.BoolIDの外部キーまたはその 逆なのだと推測されるが、それならば参照されている側の方からInsertしてやれば良い。
関連するQ&A
- マルチテーブル・インサート
ご教授よろしくお願い致します。 現在、table_aにInsertされたカラム(no,name)のデータを同時にtable_bにも反映するSQL文を考えております。 【table_a】 no | name | price ============== 005 apple 500 001 banana 250 【table_b】 no | name | color ================= 005 apple red 001 banana yellow Insertをそれぞれのテーブルで実行すれば、もちろん反映はできるのですが一度のInsert文でできるのならそれにこしたことはありません。 いろいろ調べた結果、下記のサイトでできるようなことが記載してあったため、実行したのですが、『ALL』がシンタックスエラーとなってしまいます。 そのため、postgresのマニュアルを確認してみたところ、Insert文にALL句の指定は特別記載されていなかったため、できないとも思っているのですが… サイト↓ http://www.atmarkit.co.jp/fdb/rensai/sqlclinic12/sqlclinic12_1.html サイトを参考にしたSQL文 『INSERT ALL INTO table_a(no,name) VALUES(005,apple) INTO table_b(no,name) VALUES(005,apple); 』 何か良い方法をご存知の方がいましたら、ご教授よろしくお願い致します。同じことをUpadteでもやらなければいけないのですが、それはもう少し自分で考えてみます。 只、できないことが明白な場合は、ご指摘を頂けると有難いです。 環境としましては、 OS 【Windows xp】 DB 【PostgreSQL 8.2】 です。
- 締切済み
- PostgreSQL
- insert文等で「`」の有無で失敗するテーブルとしないテーブルがある。
XAMPP(winXP、PHP4)を使っています。 Aのテーブルでは $query= "insert into table (a,b,c,d) values('1','2','3','4')"; $result = mysql_query($query); でデータが追加されるのに、Bのテーブルでは失敗しました。 今日ずっと何が間違っているのかわからなかったのdですが、 $query= "insert into table (`a`,`b`,`c`,`d`) values('1','2','3','4')"; $result = mysql_query($query); とすると成功しました。 なぜAのテーブルでは「`」が無くても成功したのに、Bのテーブルでは必要なのでしょうか。 宜しくお願いします。
- ベストアンサー
- MySQL
- IDENTITY列の複数テーブルへのINSERT
テーブルAへINSERTをした場合のIDENTITY列の値を 同じトランザクション内で テーブルBの別のフィールドへINSERTしたいのですが、 どのようにSQLを書けばよいのか、困っています。 どうか、ご教示お願い致します。 INSERT INTOTABLE_A (NAME_A) VALUES ('あいうえお') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'さしす') INSERT INTOTABLE_A (NAME_A) VALUES ('かきくけこ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'たちつ') INSERT INTOTABLE_A (NAME_A) VALUES ('さしすせそ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'なにぬ') TABLE_A ID NAME_A 5 'あいうえお' 6 'かきくけこ' 7 'さしすせそ' TABLE_B ID A_ID NAME_B 1 5 'さしす' 2 6 'たちつ' 3 7 'なにぬ'
- ベストアンサー
- SQL Server
- select insertで複数テーブルから値を取得したい
環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。
- ベストアンサー
- Oracle
- INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
挿入するフィールドの内1つだけを他のテーブルから取ってきた値を使いたいのですが、 insert into table1 (field1, field2, field3) values('a', (select field2 from table2 where field4='xxx'), 'b'); Oracleだと↑の書き方でいけるのですが、PostgreSQL(6.5.3)だとエラーになってしまいます。 2回もDBにアクセスしにいくのはいやなので、1文で書きたいです。上記以外で他の書き方をご存知でしたら教えてください。よろしくお願いします。
- ベストアンサー
- その他(データベース)
- データベースを複数作ったほうが良いでしょうか?
Win+Apache+PHP+MySQLで、自宅サーバを立てています。 データベース名:DB_A テーブル:Table_A データベース名:DB_B テーブル:Table_B とするべきか、 データベース名:DB_A テーブル:Table_A,Table_B とするべきか悩んでいます。 データベースについてあまり理解していないのですが、データベースを分けると何がどう変わるのでしょうか? (分けたほうが、高速化するのでしょうか?利点など教えていただければありがたいです。)
- 締切済み
- MySQL
- [SQLServer]既に存在するテーブルに他のテーブルからデータをINSERT
SQL初心者です。 既に存在するTable_A(レコード0件)に対して、これまた既に存在するTable_B(レコード100件)の内容をINSERTしたいです。次のように書くとだめですよね。 (Table_AとTable_Bのレイアウトはまったく同じ) select * into Table_A from Table_B 何か策はあるのでしょうが、ちょっと探しきれません。お分かりになるかた教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- 複数のテーブルの検索について
お世話になっております。 題名にありますように、複数のテーブルに登録のあるデータを、テキストフォームやチェックボックス、プルダウンなどのフォームで入力(選択)されたものを(PHPにて)検索したいと考えておりますが、googleなどで調べていても、キーワードが適切でないためか、得たい情報を得られずにおります。 以下のようなテーブル構成で、上記質問のような検索をする場合、(googleなどで検索するには)どのようなキーワードが適切でしょうか?ソースを教えていただくのが簡単ですが、理解を深めたいと考えての質問です。お忙しい中恐縮ですが、アドバイスのほど宜しくお願いいたします。 table_a id name address category table_b no id title subject 上記テーブルA、Bに設定されたフィールドを、各フォームににて入力(選択)されたフォームで一括で検索するソースを学びたいのです。 ※table_a と table_b にある id で紐付けています。
- 締切済み
- MySQL
- SELECT文の発行でタイムアウトします
以下のようなテーブルがあります。 BooksDataテーブルのBookIDから、 BooksCategoryテーブルのCategoryIDを調べ CategoryNameを表示したいと考えておりますが SELECT文が実行中にタイムアウトになってしまいます。 何か悪いところはございますでしょうか。 [BooksData] BookID ISBN Title [BooksCategory] BookID CategoryID [BooksM_Category] CategoryID CategoryName SELECT BMC.* FROM BooksM_Category AS BMC, BooksCategory AS BC WHERE BookID=XXX AND BMC.CategoryID=BC.CategoryID
- 締切済み
- その他(データベース)
- INSERTしたテーブルデータの参照
いつもお世話になっています。 早速ですが質問したいことがあります。 環境は、ORACLE11gです。 よろしくお願いします。 PL/SQLにて、テーブルAに対してINSERTを行い、テーブルAにINSERTした データを元にデータを作成し、テーブルBにINSERTをしたいと考えています。 COMMITは、プログラムの処理が全て終わった後に行います。 一応プログラムを作成し、想定どおりの動作を確認できたのですが、一点だけ 気になることがあります。 テーブルAにデータをINSERTしてから、COMMITせずに、テーブルBのデータを 作成するために、テーブルAのデータを取得します。その際、最初に登録した テーブルAのデータは、テーブルBを作成する際、必ず取得できるのでしょうか。 (一応作成したプログラムでは取得できていますが、必ず取得できるものなのか を教えていただきたいです。) COMMITは、仕様上プログラムが全て終わった後にしか行えません。 質問は以上です。 質問文がごちゃごちゃして見難くてすみませんが、ご回答よろしくお願いします。
- ベストアンサー
- Oracle
お礼
トランザクションで同期がとれました。 どうもありがとうございました。