同步 Oracle 数据库中 2 个表中的数据库列
Synchronize database columns in 2 tables in Oracle database
我们在 2 个表中有列,其值需要相同。
Table 1
ID | ColumnA
Table 2
ID | ColumnB
我们有这种冗余来支持现有的应用程序。一旦发生迁移,Table 2 中的 ColumnB 将不再使用。但是,在此之前,两列将需要同步。我建议使用触发器来完成此操作,并在迁移完成后删除触发器。
有人告诉我这通常不会完成,应该在应用程序代码中完成。为什么触发器不是一个好的选择?
触发器非常安全;一切都保存在数据库中,由它负责。没有“后门”,即您在该应用程序中有两个“表单”并修改了一个以执行同步,但是忘记在另一个中执行相同的操作,现在您不同步了.
触发器选项的缺点是它会为受影响的每一行触发。如果您在单行甚至几百行上执行此操作,一切都会好起来的。但是,如果涉及数百万行,那么您可以预期事情会变慢,因为......好吧,为它们中的每一个触发一百万次。
但是,按照您描述的方式(“应该在应用程序代码中完成”),我想这应该不是问题,看起来更像是逐行处理。不过,我可能是错的。
我们在 2 个表中有列,其值需要相同。
Table 1
ID | ColumnA
Table 2
ID | ColumnB
我们有这种冗余来支持现有的应用程序。一旦发生迁移,Table 2 中的 ColumnB 将不再使用。但是,在此之前,两列将需要同步。我建议使用触发器来完成此操作,并在迁移完成后删除触发器。
有人告诉我这通常不会完成,应该在应用程序代码中完成。为什么触发器不是一个好的选择?
触发器非常安全;一切都保存在数据库中,由它负责。没有“后门”,即您在该应用程序中有两个“表单”并修改了一个以执行同步,但是忘记在另一个中执行相同的操作,现在您不同步了.
触发器选项的缺点是它会为受影响的每一行触发。如果您在单行甚至几百行上执行此操作,一切都会好起来的。但是,如果涉及数百万行,那么您可以预期事情会变慢,因为......好吧,为它们中的每一个触发一百万次。
但是,按照您描述的方式(“应该在应用程序代码中完成”),我想这应该不是问题,看起来更像是逐行处理。不过,我可能是错的。