填充SQL数据库(Oracle)时,如何将字段连接到单个字段中

填充SQL数据库(Oracle)时,如何将字段连接到单个字段中,sql,oracle,triggers,concatenation,Sql,Oracle,Triggers,Concatenation,我需要将一批数据从一个单独的程序插入到一个表中(在OracleSQLDeveloper中)。这种数据传输将是单向的,这意味着系统只是偶尔会在表中转储一堆数据,替换以前的数据。因此,我不必担心能够更新单个字段。我也无法修改这个系统如何将数据传输到我的表中,这意味着我必须将其字段映射到我的列标题(它只是在幕后使用INSERTs发送数据) 我希望该表有一个唯一的TRANSACTION\u ID列。但是,每个TRANSACTION\u ID可能有多个TRANSACTION\u类型s,因此对于每个ID,我

我需要将一批数据从一个单独的程序插入到一个表中(在OracleSQLDeveloper中)。这种数据传输将是单向的,这意味着系统只是偶尔会在表中转储一堆数据,替换以前的数据。因此,我不必担心能够更新单个字段。我也无法修改这个系统如何将数据传输到我的表中,这意味着我必须将其字段映射到我的列标题(它只是在幕后使用
INSERT
s发送数据)

我希望该表有一个唯一的
TRANSACTION\u ID
列。但是,每个
TRANSACTION\u ID
可能有多个
TRANSACTION\u类型
s,因此对于每个ID,我将收到多行不同的
TRANSACTION\u类型
。e、 g:

INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT35)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT40)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT12)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1001, TT12)
......etc.
我想将它们连接到一个由逗号分隔的字段中,因此最终的表如下所示:

 TRANSACTION_ID     TRANSACTION_TYPES
-----------------------------------------
  1000               TT35,TT40,TT12
  1001               TT12
  1002               TT40,TT23
我意识到这是数据的非标准化,但因为我不需要更新数据,所以我并不过分担心

我知道这样做的方法通常是使用
合并
,但由于我被源系统的
插入
操作卡住了,所以我无法使用它。是否可以使用触发器执行此操作?我在以前的尝试中遇到了变异表错误等

最后一种方法可能是将
事务类型
存储在一个单独的表中,处理数据,然后删除第二个表,但这似乎过于复杂了

有没有一种我不知道的直截了当的方法


谢谢

评论太长了

你也许可以用扳机,但我不推荐。触发器需要替换插入,有时执行插入,有时连接值

还有两个选择。首先,将数据加载到一个临时表中,然后创建一个新的表来支持您的流程


第二种方法是忽略问题,在查询数据时使用
list\u agg()
将数据汇集在一起

这条评论太长了

你也许可以用扳机,但我不推荐。触发器需要替换插入,有时执行插入,有时连接值

还有两个选择。首先,将数据加载到一个临时表中,然后创建一个新的表来支持您的流程


第二种方法是忽略问题,在查询数据时使用
list\u agg()
将数据汇集在一起

但是会有第三方使用这些数据,所以我真的需要以他们需要的格式向他们展示这些数据。我认为依靠他们使用特定的查询不是一个好主意。暂存表建议与我描述的类似吗?@MDalt。你可以将数据加载到一个表中,然后用你想要的格式创建一个视图或物化视图。不过,使用数据的将是第三方,所以我真的需要以他们需要的格式向他们展示数据。我认为依靠他们使用特定的查询不是一个好主意。暂存表建议与我描述的类似吗?@MDalt。可以将数据加载到表中,然后使用所需格式的数据创建视图或物化视图。