在查询时直接跳过身份

Skip an identity directly on query

我遇到这种情况:

TABLE 1

TABLE 2

我想要实现的是,在对其中一个 table 进行插入查询时,如果身份已存在于另一个中,则跳过它并选择一个新的。

为什么?因为这些table基本上是相关的,只是没有任何数据库关系。当用户想要调用属于另一个 table 的对象时,他应该能够只知道其中一个 table 的 ID。 在我的例子中,我有 income/financial 个帐户 注册表 相关联,并且它们必须具有 相同的 ID.

目前采用的解决方案(讨厌的一个)

一笔交易。如果生成的 id 在另一个 table 中不存在则提交,如果存在则中止,并且由于 while 循环(这是我不喜欢的部分)交易将继续实例化直到满足条件。

还有其他干净的解决方案吗?

身份不适合这种情况。解决方案:您需要使用单个序列在两个表中插入。简单明了。

这是干净的解决方案。所有其他的都只是(丑陋的)解决方法。

这是一个非常奇怪的请求,但您可以增加标识值,使一个为偶数,另一个为奇数。那么两个表之间就永远不会有任何重叠:

create table table1 (
    table1_id int identity(1, 2) primary key,
    . . . 
);

create table table2 (
    table2_id int identity(2, 2) primary key,
    . . .
);

这似乎是我能想到的最有效的方式来满足您的要求。