2

2 つ以上のテーブルにデータの行を挿入することが可能かどうかを尋ねたい:

サンプルクエリ:

tblsample、tblsample2 ('tblsample.id'、'tblsample2.id'') の値 ('1'、'1') に挿入します。

構文が間違っていると思いますが、表示したいのは、実行できた可能性のあるプロセスです。

このアイデアがうまくいかない場合のように、これをトランザクションクエリに入れることを考えています。

4

3 に答える 3

0

MS SQL と Oracle は複数の挿入をサポートできますが、途中でエラーが発生すると SQL ステートメント全体がロールバックされないため、トランザクションでラップする必要があります。これを行うには、「;」を追加します。あなたの挿入物の間:

INSERT INTO table1 (1,2,3,'Test');INSERT INTO table1 (3,4,5,'Test');INSERT INTO table1 (6,7,8,'Test')

しかし、MS Access でできるちょっとしたトリックは、いくつかのデータを一緒に UNION して挿入するデータのテーブルを作成することです。

INSERT INTO table1 (SELECT 1,2,3,'TEST' UNION ALL SELECT 1,2,3,'TEST' UNION ALL SELECT 1,2,3,'TEST')

アクセスでこれを行ってからしばらく経ちましたが、MS Access の構文が間違っている可能性があります。

これは他の多くのデータベースでも機能しますが、構文は異なる場合があります。このアプローチの良い点は、すでにトランザクション対応であるため、トランザクションでラップする必要がないことです。

于 2013-10-15T14:31:20.877 に答える
0

Oracle は、次のような複数テーブルの挿入をサポートしているようです。

insert all
into sample_table (id, name) values (1, 'foo')
into sample_table2 (id, name) values (2, 'bar')
select * from dual;

しかし、ベンダーに依存しない方法はないと思います。

于 2013-10-15T03:49:49.113 に答える
0

標準 SQL では不可能です。Oracle、Microsoft SQL Server、およびおそらく他の DBMS では、特定の制限付きで複数テーブルの挿入が許可されています。

一度に 1 つのテーブルしか変更できないという制限は、SQL の基本的な制限です。これにより、いくつかの複数テーブルの整合性制約を強制することが事実上不可能になります。これがおそらく、SQL DBMS が通常非常に限られた一連の制約 (FOREIGN KEY および一部の CHECK 制約) のみをサポートする理由です。

于 2013-10-15T06:15:10.317 に答える