主键范围取决于SQL Server中的行类型

我将SQL Server与Entity Framework一起使用。我有一张有几千行的表。

客户端要向该表添加新的数据类型。两种类型都通过MainType列进行区分。

客户端还希望A类型的行的PK值最大为1000000,而B类型的行的1000000以上。

我当时正在考虑使用INSTEAD OF INSERT触发器,但是最好不要在触发器主体中指定每个列的名称,因为它们可能会更改。

是否可以创建更改主键列的触发器?

我知道这可能不是在PK列上进行操作的最佳选择。也许有一种方法可以在实体框架方面实现?

qq7068127 回答:主键范围取决于SQL Server中的行类型

这种情况的最佳实践是不要自动生成列,而要自动生成数字。这样,您可以确保它们是唯一的。 SQL Server(和其他平台)为此提供了序列对象。

https://docs.microsoft.com/en-us/sql/relational-databases/sequence-numbers/sequence-numbers?view=sql-server-ver15

在这种情况下,您将使用描述的起点创建两个序列对象。当您需要一种类型的ID时,可以从该序列中获取它;当您需要另一类型的ID时,可以从该类型的序列生成器中获取它。

仅供参考,我经常在一组序列是偶数(从2开始)而另一组是奇数(从1开始)时使用它。但是我也看到了您描述的很高的第二盘。

最常见的用例是全双工复制(其中两个彼此复制的数据存储可以获取新数据)。但是您的用例可以使用相同的技术。

本文链接:https://www.f2er.com/3142248.html

大家都在问