我维护的应用程序最初是针对SQL Server特定编写的(使用IDENTITY字段)。因此,我们不得不定义许多触发器来自动递增表的主键。
有人告诉我,在Oracle世界中,这被认为是一种hacky解决方法,但那是以“朋友的朋友”的方式告诉我的。使用触发器从序列中递增主键而不直接使用序列有多大问题?
我维护的应用程序最初是针对SQL Server特定编写的(使用IDENTITY字段)。因此,我们不得不定义许多触发器来自动递增表的主键。
有人告诉我,在Oracle世界中,这被认为是一种hacky解决方法,但那是以“朋友的朋友”的方式告诉我的。使用触发器从序列中递增主键而不直接使用序列有多大问题?
根据我的经验,这是一种非常常见的做法,而且并不太糟糕。然而,如果您可以控制插入(例如,如果所有插入都通过 PL/SQL API 完成),那么在 INSERT 语句中直接使用序列会更加高效 - 因为它避免了触发器的开销。但是,如果您已经使用了触发器,我真的不必过于担心!
这可能与主题不完全相关,但在合并语句中使用“before insert trigger”自动递增主键是一个很好的选择。如果直接在合并插入部分中使用序列,则似乎即使进行更新操作也会调用该序列。