質問

手順は次のとおりです。

PROCEDURE add_values
AS
BEGIN

   INSERT INTO TABLE_A ...
   SELECT t.id, t.name FROM TABLE_C ("This selection will return multiple records")

END

TableAに挿入していますが、tableAに挿入された特定のレコードの別のテーブル(TableB)に挿入したいです。

TableAとTableBの列は異なります。 TableBに挿入する前に関数を呼び出すのが賢明ですか?tableAに挿入されたIDに基づいて特定の取得と設定を実行したいですか?

役に立ちましたか?

解決

これを試してください

入力

declare @tblA table (id int,name varchar(20))
declare @tblB table (id int,name varchar(20))
declare @tblC table (id int identity,name varchar(20))
insert into @tblC 
    select 'name1' union all select 'name2' union all
    select 'name3' union all select 'name4' union all
    select 'name5' union all select 'name6' union all
    select 'name7' union all select 'name8' union all
    select 'name9' union all select 'name10' union all
    select 'name11' union all select 'name12' union all
    select 'name13' union all select 'name14' union all
    select 'name15' union all select 'name16' union all
    select 'name17' union all select 'name18' union all
    select 'name19' union all select 'name20' 

クエリ

insert @tblA 
output INSERTED.id, INSERTED.Name
into @tblB 
select 
    id,name
from @tblC 
where id % 2 = 0

select * from @tblA
select * from @tblB

出力: [両方のテーブルAおよびB]

id名

2   name2
4   name4
6   name6
8   name8
10  name10
12  name12
14  name14
16  name16
18  name18
20  name20

基本的に、これらのレコードを、IDが偶数のTableCからTableAに挿入しています。そして、TableAからTableBに値を挿入するOutput句を使用して

詳細については、 OUTPUT句

これが理にかなっていることを願って

他のヒント

これがテーブルにデータを挿入する唯一の方法である場合、それを行うためのトリガーを作成できます。 (それ以外の場合は、すべての挿入で実行されます)

またはカーソルを反復処理して、選択からのすべての挿入でそれを行うことができます

カーソルの例

最適な手法は、テーブル定義と関連クエリの詳細に依存します。質問の情報に基づいて、次のようになります:

CREATE PROCEDURE add_values
AS
BEGIN
  BEGIN TRANS
    INSERT INTO TableA
      SELECT id, name FROM TableC
    INSERT INTO TableB
      SELECT id, name FROM TableC
  COMMIT
END

MySQLで次のように INSERT..SELECT を試してください:

INSERT INTO tableB SELECT * FROM tableA where id = LAST_INSERT_ID();

http:// dev .mysql.com / doc / refman / 5.0 / en / ansi-diff-select-into-table.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top