簡體   English   中英

使用觸發器將Postgres SQL插入語句拆分為2個表

[英]Splitting a postgres SQL insert statement into 2 tables using triggers

是否可以使用postgres觸發器將INSERT語句拆分為2個表? 因此,如果您確實insert into testtable (col1, col2) values (val1a, val1b), (val2a, val2b) ,是否可以將其與觸發器轉換為類似

insert into testtable (col1) values (val1a), (val1b)
insert into anothertable (col2) values (val2a), (val2b)

基本上是有可能testtable不具有col2即使原始SQL INSERT看起來像col2上應該存在testtable

如何使用觸發器來完成?

您可以使用帶有觸發器或規則的VIEW來重定向INSERT

或者,您也可以在一個帶有數據修改CTE的SQL語句中完成此操作。

WITH input(col1, col2) AS (
   VALUES
     (text 'val1a', text 'val1b')  --  explicit type cast in first row
   , ('val2a', 'val2b')
   )
, ins1 AS (
   INSERT INTO testtable (col1)
   SELECT col1 FROM input
   )
INSERT INTO anothertable (col2)
SELECT col2 FROM input;

通常,還會以某種方式存儲輸入行的“ val1a”和“ val1b”之間的連接。
您可能想使用RETURNING子句從第一個表中獲取串行PK並將其存儲在第二個表中。

有關:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM