C#を使用してinnerの結合を持つAccessデータベースの複数のテーブルにデータを挿入する方法はありますか?データの挿入方法は?
答えて
私は、参加することによって、別のテーブルへの外部キーとの関係を意味すると見なします。ジョインとは、テーブルではなくクエリを指します。
必要に応じて各テーブルに1つずつ追加するだけで、親テーブルにレコードを追加し、追加したばかりの新しいレコードのキーを取得し、そのIDを使用する子テーブルへの挿入を行います。子テーブルの外部キーにする。
それはAccessで動作するかどうか、私は知りませんが、あなたが試すことができます:
INSERT INTO table (col1, col2, col3)
SELECT t1.col1, t1.col2, t2.col3
FROM table1 t1
INNER JOIN table2 t2 ON t1.Id = t2.Id
あなたはさまざまなテーブルの上にこれを実行する必要がある場合は、様々な挿入を行い、ジェットエンジンは、上に複数のquerysを許可していません。 here
慎重に質問を読む –
私の経験によれば、標準的な方法はありませんが、これには回避策がありますが、テーブルやデータベースの構造によって異なります。
アクセスがサポートされているかどうかわかりません。トリガー、SP、および機能をサポートしています。私はそうではないと考えているので、それが本当であれば、次の回避策は有効ではありません。
あなたが親に存在していない子テーブル内の値を挿入することになるかもしれないので、失敗していまし外部キー制約がある場合は、子テーブルの上にトリガーを使用しますが、可能性があります。トリガーに引数を渡すことはできないので、親にトリガーを付けることは無意味です。
フロントエンドアプリケーションからストアプロシージャをコールしたり、ストアプロシージャから複数のinsertステートメントを呼び出したりする可能性があります。しかし、あなたの質問から、私はこれがあなたが "単一の挿入ステートメントから"と言う質問からやりたいとは思わないと推測します。
もう1つの回避策は、関数が定義され、挿入クエリから関数を呼び出すことができるトリガーアプローチに似ているものもあります。 with関数から、子テーブルにデータを挿入します。しかし、再度整合性制約がある場合、トリガーの場合と同じ問題に終わる可能性があります。挿入が行われる前に関数が最初に実行されるためです。
もう1つのアプローチがあります。あなたの必要なテーブルのフィールドの和集合であるテーブルを作成します(参照のためにそれをルートテーブルと呼ぶことができます)。次に、そのテーブルに挿入するトリガーを定義します。このルートテーブルにレコードを挿入し、必要なテーブルに適切なフィールドを挿入します。 (アトミック性のトリガーでトランザクションを使用する必要があります)。
テーブル構造があるとします。emp(empid、name); empContacts(contactid、empid、number); empAddress(addressId、empid、address); empとempContactsのフィールドの和集合である別のテーブルを作成すると、Rootemp(empid、name、contactid、number、addressId、address)という名前になります。
このテーブルのトリガーを作成し、トランザクション内のemp、empContactsおよびempAddressテーブルのトリガー挿入レコード内から作成します。
しかし、フロントエンドからは1つのinsert文を呼び出すことができますが、データベースは複数の挿入を呼び出しているため、これは回避策です。
回避策が必要ではないため、これは最善の選択肢ではない可能性があります。
PS:emp、empContact、およびempAdressの例はあまりスマートな例ではないかもしれませんが、メッセージを伝えたらと思います。
無益な回答を投稿する前にJetに関する情報を見つけられないのはなぜですか? Jetにはトリガはなく、ストアドプロシージャはありません(現実的な意味で、つまりプロシージャロジックが内部にあります)。 –
あなたが私の答えを読んでいれば、私はすでに「アクセスサポートトリガー、SP、および機能についてはわかりませんが、それが本当であれば、次の回避策は有効ではないと思います。 –
よくわからない場合は、チェックしてください!あなたの答えの残りを完了するよりも早かっただろう。 –
私はACE/Jetエンジンの質問に「2つのテーブルの間にINNER JOIN
を作成できれば、どちらのSQL文でも両方のテーブルにINSERT
を作成できますか?通常は密接に修飾子が続きます。「... FOREIGN KEY
(Access =参照整合性を適用した関係)がテーブル間にある場合、参照されたテーブルのINDENTITY
/AutoNumber番号が自動的に参照テーブルに追加されますか?
への答えこれらの質問はイエスです:IDENTITY
列と、その後IDENTITY
列を参照する列INSERT INTO
VIEW
がIDENTITY
列とその参照する列を省略することを含む、INNER JOIN
(または同等)でVIEW
を作成します。
はここに(私はあなたがOLE DBを使用していると仮定)ANSI-92クエリモードの構文に簡単な例です:
CREATE TABLE TableA
(
ID IDENTITY NOT NULL UNIQUE,
a_col INTEGER NOT NULL
)
;
CREATE TABLE TableB
(
ID INTEGER NOT NULL UNIQUE
REFERENCES TableA (ID),
b_col INTEGER NOT NULL
)
;
CREATE VIEW TestAB
(
a_ID, a_col,
b_ID, b_col
)
AS
SELECT A1.ID, A1.a_col,
B1.ID, B1.b_col
FROM TableA AS A1
INNER JOIN TableB AS B1
ON A1.ID = B1.ID
;
INSERT INTO TestAB (a_col, b_col) VALUES (55, 99)
;
- 1. jsonデータの挿入方法とMongo DBの挿入方法は?
- 2. Handsontable、データを挿入する方法は?
- 3. テーブルにデータを挿入する方法
- 4. プレーンテキストの挿入方法は?
- 5. データベースの挿入方法は?
- 6. データ挿入ループは
- 7. 特定の表のセルにデータを挿入する方法は?
- 8. 複数のデータをデータテーブルの列に挿入する方法は?
- 9. データの挿入
- 10. null値の列にデータを挿入/更新する方法は?
- 11. Codeigniterでデータの挿入時間を短縮する方法は?
- 12. codeigniterのデータベースにデータをループ挿入する方法は?
- 13. PHPのデータ挿入はPDO
- 14. SQLデータの挿入は
- 15. データ挿入時に自動更新をトリガーする方法は?
- 16. SilverlightアプリケーションでSQLテーブルにデータを挿入する方法は?
- 17. データを解析に挿入する方法は?
- 18. 内部的にデータベースにデータを挿入する方法は?
- 19. createServerRenderからサーバーサイドにデータを挿入する方法は?
- 20. 挿入データ
- 21. エラー挿入データ
- 22. 挿入データ::マップ
- 23. データ挿入PHP
- 24. 挿入データ
- 25. 挿入データ
- 26. 挿入データ
- 27. 挿入データの下
- 28. データの挿入と更新が完了した後にデータを挿入する方法
- 29. オペレータドメインフィルタの挿入方法?
- 30. アンドロイドスタジオデザイナープレビュー:デバイスフレームの挿入方法
あなたのテーブル構造のサンプルを提供することができた場合、答えを提供する方が簡単かもしれません。 – schooner
私は1つで、どのような質問が出されているのか理解できません。利用可能な回答の可能性があることを明確にする必要があります。 –
私はそれがちょっと押していると思います。使用可能な答えはたくさんあります。 – JoshJordan