Q:
新增一筆主檔(例如訂單主檔)資料後,接著要新增多筆資料至明細檔(例如訂單明細檔),通常主檔的訂單號碼會訂定為自動給號,即Serial或Sequence object資料型態,相對的明細檔的訂單號碼就不會自動給號,而是要與主檔的訂單號碼相同,在PostgreSQL要如何處理呢?
A:
首先建立兩個Tables,分別為訂單主檔及訂單明細檔
create table orders(id serial, customer_name varchar(10) , primary key (id));
create table order_details(id int, item_id int, qty int , primary key (id, item_id));
接著新增一筆訂單主檔資料及三筆訂單明細檔資料
insert into orders (customer_name) values ('AAA');
insert into order_details (id , item_id , qty) values (currval('orders_id_seq'),1,10);
insert into order_details (id , item_id , qty) values (currval('orders_id_seq'),2,30);
insert into order_details (id , item_id , qty) values (currval('orders_id_seq'),3,20);
其中 currval('orders_id_seq') 就是取得新增的訂單主檔資料之id,orders_id_seq為建立主檔時產生的Sequence object名稱,預設為<Table Name>_id_seq。
大功告成,得到小小的滿足感 !!
沒有留言:
張貼留言