自动增加int列BUT也允许手动输入?无法使用主键

时间:2013-05-30 19:13:04

标签: c# .net entity-framework sql-server-2005

我们的团队正在为某个组织开发一个新系统。 我们有一个Client表:

Id (PK), int, not null
NoClient, int, not null

组织通常按其编号NoClient引用客户。慢慢地,旧系统中的客户端将(手动)迁移到新系统。

NoClient应该是自动递增(对于新系统的新客户端功能),同时允许手动输入(对于现有客户端),以后不会导致冲突。

从可视化角度看,从自动增量列的角度来看:

..., 9998, 9999, (used), 10001, 10002

有关如何利用SQL Server 2005(或实体框架)解决该问题的任何想法?

可能必须创建种子表并使用存储过程(嵌入逻辑),除非有更好的方法来执行此操作...

2 个答案:

答案 0 :(得分:0)

您可以尝试SET IDENTITY_INSERT ON

答案 1 :(得分:0)

你的问题不是很清楚。

激活bool列。使用false列加载所有现有的。然后在迁移客户时将其打开。

至于寻找漏洞。

select min(tb1.PK) + 1 
from table tb1 
left outer join table tb2 
on tb2.pk = tb1.pk + 1 
where tb2.pk is null