使用外键作为复合主键的表的软删除实现失败

时间:2019-05-23 12:02:21

标签: sql sql-server database-design soft-delete

在Sql Server中,我有一个具有以下结构的表。

(客户密钥|产品密钥|数量| CreatedOn | ModifiedOn | DeletedOn) (GUID,GUID,int,TimeStamp,TimeStamp,TimeStamp)

主键(CustomerKey,ProductKey) 索引

  1. (CustomerKey,ProductKey)
  2. (客户键,产品键,DeletedOn)

索引2用于实现软删除,以便在删除记录时设置DeletedOn。因此在一个表中,我们可能有具有不同删除日期的不同记录,但只有一个删除日期为null的记录。

此策略适用于以单个键为主的表。该表有一个复合键,两个键实际上都是外键。

现在考虑记录 (xxx-xx-xx,yyy-yy-yy,12,'2009-12-1',null,null)

我删除了该记录。现在为相同的客户和相同的主键重新插入。但由于密钥是重复的,即客户和产品密钥,因此无法添加。

有解决方案吗?

0 个答案:

没有答案