[英]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.