使用从数据库事件返回的RowId更新数据库中的另一个表

时间:2015-01-04 19:07:44

标签: java caching oracle11g ojdbc database-events

通过监听器处理作为数据库事件的一部分返回的RowID:

class DCNDemoListener implements DatabaseChangeListener
    {
      DBChangeNotification demo;
      DCNDemoListener(DBChangeNotification dem)
      {
        demo = dem;
      }
      public void  onDatabaseChangeNotification(DatabaseChangeEvent e)
      {
        System.out.println(e.toString());
      }
    }

例如:下面是DML操作数据库返回的值

ROW:operation = UPDATE,ROWID = AAASjgAABAAAVapAAA

使用上面的ROWID我想更新/插入数据库中的另一个表。我该怎么做呢?我是否首先将RowId存储在缓存中,或者是否有其他方法可以使用查询插入/更新

1 个答案:

答案 0 :(得分:0)

使用SQL插入另一个表:

插入table2(column1,column2,....)(从table1中选择column1,column2,....其中rowid = retrived_rowid);

如果要使用C#使用第一个表中的rowid插入第二个表,则必须以某种方式将数据保留在应用程序中,然后读取数组/列表并将数据插入另一个表中一个元组一次。 ODP.net中有一种方法可以批量模式将多行插入表中。

您只能使用检索到的rowid更新原始表,因为rowid是物理行标识符,并且对于数据库中的每个元组都是唯一的。