每次更新时删除表中的记录

时间:2017-12-18 13:51:16

标签: sql-server

有三个表

Table 1 - 1 Review  details record inserted
Table 2 - 2 Services  records for each Review inserted
Table 3 - 2 Medical details records for each service inserted

下面发生的更新是来自XML的更新数据

Table 1 - 1  Review record 
Table 2 - 1 Service record for the review
Table 3 - 2 Medical record for the service

在此更新方案中,我删除了Table2和Table3记录的服务和医疗记录,并插入更新的记录。

如果我继续这样做,表2和表3中的标识列限制将超过?

注意:所有细节都以XML格式传入,我们在XML中没有特定的ServieID或MedicalCodeID。

2 个答案:

答案 0 :(得分:1)

我读到的唯一问题是:

  

如果我继续这样做,表2和表3中的标识列限制将超过?

答案:这取决于但由于缺乏细节我们不知道。

这取决于标识列类型,要删除的记录数以及执行删除的频率。

示例1:如果标识列的类型为smallint(最大值为32,767)并且您每天删除1条记录,那么您将不会用完差不多90年的值。

示例2:如果您使用的类型为bigint(最大值为9,223,372,036,854,775,807),那么您每天可以删除数百万条记录,但仍然不必担心会耗尽。

答案 1 :(得分:0)

每次插入记录时,身份会自动递增。因此,即使您稍后删除记录,Identity也不会自动重新播种。相反,您可以手动执行此操作。

即使您的插入因某些数据相关问题而失败,身份也会增加。

假设我将记录插入到具有标识列5的下一个值的表中。因此列的下一个值将为5。假设我的数据在第一次尝试时被截断,我修复了问题并重新插入数据,然后下一个值将是6(即使没有值5的记录)

它将递增,直到达到限制,因为数据类型允许