忽略无效记录的SQL约束?

时间:2016-08-22 22:09:04

标签: sql-server

我有一张表格,其中包含图纸发布日期的日期字段。发布日期与图纸表中的图纸编号相关联。绘图无法在同一天发布两次,因此我将约束设置为仅允许一个ReleaseDate + DwgKeyNum。还有一个空白区域和一个独特的PK:

  UKey (PK, int, not null)
  ReleaseDate (date, not null)
  ReleaseDescription (nvarchar(80), null)
  DwgKeyNum (FK, int, not null)
  VoidOn (bit, not null)
  Updated (datetime, null)

在我的应用中,如果您在此表中出错,您可以更正它,除非数据超过2个月。在这种情况下,您必须取消记录并创建一个新记录。

当然,由于我的约束,新记录不能使用与无效记录(oops)相同的日期。那么,我该如何解决这个问题呢?我可以将void字段添加到约束中,但这只允许一个记录。我想允许一个记录,其中VoidOn是假的," n" VoidOn为True的记录。

我读了问题767657,我认为这个问题的解决方案是创建一个单独的唯一标识符,如果VoidOn为True,则该标识符具有空值。如果他们然后取消记录(我允许),似乎很尴尬,因为我需要以某种方式重置空标识符。有更好的方法吗?

我花了我的青春学习Dataperfect,这允许"例外列表"对于每个索引(可用于从给定索引中删除记录的字段)。这非常有用,因为您可以立即包含/排除索引中的记录。不确定在SQL中如何最好地完成。

0 个答案:

没有答案