首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将自定义ID列与表的主键列同步

如何将自定义ID列与表的主键列同步
EN

Stack Overflow用户
提问于 2017-06-04 11:56:08
回答 1查看 45关注 0票数 0

最主要的是,抱歉描述得太过分了。我通过创建一个自定义ID字段"PatientID“将病人的信息存储在sql中,并且我有一个主键字段"ID”。PatientID有一个模式"PID-1“或"PID-2”等等。我想同步这两个ID。就像表的"John“的ID是4一样,它的patientID也应该是"PID-4”。为此,我已经做了一些编码,比如如果没有记录,那么开始从"PID-1“中保存patientID,然后对所有下一个记录,首先从id字段中找到患者的最大ID并将其增加1,然后将其与"PID”+ (tableID+1)连接起来。

代码语言:javascript
复制
 ID    PatientID
 1      PID-1
 2      PID-2
 3      PID-3
 4      PID-4

现在,对于一个实例,在添加更多记录时,会抛出一个异常,尽管未保存记录,但ID会增加。问题来了。假设某个bug来了,无法将ID 5的记录保存在db中,当程序正确运行时,该错误会将ID 6而不是5放在数据库中。而对于patientID,由于MAX查询,它会将"PID-5“放入”PID-5“。从这里开始,这两个ID都是不同的。删除同样的问题,如果我从上面的表中删除最后一条记录,即4和PID-4,下一条记录的ID为5,而PatientID为"PID-4“。这是从我这边处理两个ID的全部问题。任何替代的解决方案或任何修改我的想法或任何更好的想法,然后我的将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-04 12:00:45

在Server中,可以为此目的创建计算列:

代码语言:javascript
复制
ALTER TABLE Patient DROP COLUMN PatientID;
GO
ALTER TABLE Patient ADD COLUMN PatientID AS ('PID-'+CAST(ID AS VARCHAR(15));

有关计算列的更多信息,请查看这里

注意事项:我以为您的表名是Patient。如果这不是您表的名称,则必须相应地更改它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44353805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档