使用SQL Server 2008,有三个表,表a、表b和表c。
都有一ID
列,但对于表 a 和 bID
列是 a identity integer
,对于表 cID
列是一个varchar
类型
目前,存储过程采用名称参数,遵循一定的逻辑,插入表 a 或表 b,获取标识,以“A”或“B”为前缀,然后插入表 c。
问题是,表CID
列可能有重复值,即如果表A的标识为2,表C的列中可能已经有'A2','A3','A5' ID
,如何编写T-SQL查询以识别表 C 中的下一个可用值,然后确保相应地更新表 A/B?
[更新]这是当前步骤,1.取决于输入参数,插入表A或表B 2.初始化种子值=@@Identity 3.计算ID值以通过前缀'A'或附加'插入表C B' 与种子值 4. 在表 C 中通过步骤 3 中的 ID 值查找记录匹配,如果没有找到任何记录,则插入它,否则将种子值增加 1,然后重复步骤 3
问题是在一定的取值范围内,C表ID中可能存在一个巨大的值块,即表C ID中现在存在A3000到A500000,按照现有逻辑查询数据库速度极慢。需要找出一个逻辑来巧妙地获得最小可用号码(不带前缀)
很难描述,希望这更有意义,我真的很感谢任何帮助提前谢谢!