繁体   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