Postgresql

獲取主表中id的值並提供給其他表

  • January 12, 2020

我有 5 個表,其中一個是主表,另外 4 個是具有主表 id 的外鍵的表 在此處輸入圖像描述


我必須創建一個程序,在包括主表在內的所有表中插入數據,我必須保持主表的 id 遞增。那麼我應該如何獲取主表行的值並在該過程中的其他表中提供它的 ID,而不使用 SELECT 查詢(獲取主表行的 ID)或不手動提供我的主表的 ID程序。

我希望所有這些都在數據庫端進行處理。

我正在使用 PostgreSQL

請幫助我。

假設生成了主表中的 ID(例如,因為它被定義為generated always as identityor serial),您可以在單個語句中執行這些插入:

with new_master as (
 insert into master_table (column_one, column_two, column_tree
 values (1,2,3)
 returning id --<< makes the generated ID available
), new_t1 as (
 insert into table_01 (master_id, some_column, other_column)
 select id, 'some_value', 'other_value'  
 from new_master
), new_t2 as (
 ... as as above
)
insert into table_04 (master_id, some_column)
select id, 'another_value'
from new_master;

您實際上並不需要儲存過程,但如果您真的需要,可以將上述語句放在一個中。

引用自:https://dba.stackexchange.com/questions/257210