SQL server への複数のリレーショナルテーブルへのインサートを簡単実現したく質問しています。
例えば、下記2つのtest1,test2テーブルがあった時に、
CREATE TABLE test1 (
id int identity(1,1)
,value varchar(20)
,CONSTRAINT test1_id_pk PRIMARY KEY (id)
);
CREATE TABLE test2 (
id int
,test1_id int
,value varchar(20)
,CONSTRAINT test2_id_pk PRIMARY KEY (id)
,CONSTRAINT test1_id_fk FOREIGN KEY (test1_id) REFERENCES test1 (id)
)
やりたいのは、test1,test2へ同時にデータを挿入することです。
もちろん、この例では構造が簡単なので、
insert into test1 set (value) values ('test1_data')
insert into test2 set(test1_id,value) values (@@IDENTITY,'test2_data')
のように、last inserted IDを利用することにより、実現できることは知っています。
しかし、テーブル数が多くなってくると、このような書き方では、queryが複雑になり、
insert文のチェックも難しくなります。
イメージでは、xmlやjsonデータを流し込む形で、insert したく思っています。
下記のようなxmlの、感じです。
<test1 value="test1_data1">
<test2 value="test2_data1">
<test2 value="test2_data2">
<test2 value="test2_data3">
<test2 value="test2_data4">
<test2 value="test2_data5">
</test1>
<test1 value="test1_data2">
<test2 value="test2_data1">
<test2 value="test2_data2">
<test2 value="test2_data3">
<test2 value="test2_data4">
<test2 value="test2_data5">
</test1>
--------------------------
対象のRDBMSは SQL Azure,SQL Server 2012以上です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/24 05:37