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

时间:2017-06-04 11:56:09

标签: c# mysql sql-server

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

 ID    PatientID
 1      PID-1
 2      PID-2
 3      PID-3
 4      PID-4

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

1 个答案:

答案 0 :(得分:2)

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

ALTER TABLE Patient DROP COLUMN PatientID;
GO
ALTER TABLE Patient ADD COLUMN PatientID AS ('PID-'+CAST(ID AS VARCHAR(15));

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

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