これは SA を使用していませんが、Sqlite3 の 2 つのテーブルに行を挿入し、往復を行わないことを示す例です。
2 つのテーブルを結合するビューを作成し、挿入を処理する代わりのトリガーを記述してから、ビューに挿入します。これをさらに進めたい場合は、SA を変更してビューに挿入するのは難しくありません。
create table customer (id integer primary key autoincrement, name text not null);
create table address (id integer primary key autoincrement, customer_id integer references customer not null, street text);
create view customer_view as
select customer.id as customer_id, customer.name, address.id as address_id, address.street
from customer
inner join address on customer.id = address.id;
create trigger customer_view_insert_trg
instead of insert on customer_view begin
insert into customer (name) values (new.name);
insert into address (customer_id, street) values ((select last_insert_rowid()), new.street);
end;
insert into customer_view (name, street) values ('Joe', 'Main Street');
insert into customer_view (name, street) values ('Bill', 'Water Street');
sqlite> select * from customer;
1|Joe
2|Bill
sqlite> select * from address;
1|1|Main Street
2|2|Water Street