私は2つの手順を書いた。
idsのseq名を知ることができます。
create or replace procedure FOO_INSERT(foo_name in varchar2, FooTags_tagName in varchar2)
is
foo_seq_val number;
footag_seq_val number;
begin
select foo_seq.nextval into foo_seq_val from dual;
insert into foo(id,name) values (foo_seq_val, foo_name);
select footag_seq.nextval into footag_seq_val from dual;
insert into footags (id,fooid,tagName) values(footag_seq_val,foo_seq_val,FooTags_tagName);
commit;
end;
IDのseq名がわからない場合は、
create or replace procedure FOO_INSERT_T(foo_name in varchar2, FooTags_tagName in varchar2)
is
foo_seq_val number;
begin
insert into foo_T(name) values (foo_name);
select id into foo_seq_val from FOO_T where name =foo_name;
insert into footags_T (fooid,tagName) values(foo_seq_val,FooTags_tagName);
commit;
end;
idsを渡すと、
insert into foo (id, name) values (123,'foo_name');
insert into footags (id,fooid,tagname) select 444,id, 'tag_name' from foo ;
commit;
2番目の手順では、foo_T.nameの値が一意であるか、各行の他の値によってIDが一意であると仮定します。あなたの選択の末尾にあなたの選択の末尾に置くことができますand ... and ..
それぞれCOMMIT
が表示されます。エラーがある場合は、foo_table
とfooTags_table
のすべての挿入をロールバックします。これは正確です。
はあなたが手順にしたいですか? –
@mehmetsahinもしそれがmybatisで動作するのか、それとも簡単に変換されるのでしょうか?正直言って、この特定の行動のベストプラクティスがわからない。 – canadiancreed
Foo.idとFooTags.idはシーケンスではありません。あなたはそれらを渡すと思いますか? –