如何删除时间戳是复合主键的一部分的行?

时间:2014-06-04 13:44:02

标签: database sql-server-2008 composite-key delete-row

我有一张表,记录每次收取费用。复合键由以下组成:
  - 时间戳
  - 银行编号
  - 分行号
  - 运营商号码
  - 钱箱号码

最后四个并不总是独自识别。 (这就是时间戳在那里的原因。)

退还费用后,我想从数据库中删除该行。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

使主键成为唯一集的主键。使用主键/复合列删除记录。

Delete
FROM <Table Name>
Where Timestamp = @Timestamp
AND [Bank Number] = @BranchNumber
AND [Branch Number] = @[BranchNumber
AND [Operator Number] = @OperatorNumber
AND [Cashbox Number] = @CashboxNumber

另一种选择: 在表中附加两列 退还小额 已删除或无效的smallint

不是实际删除记录,而是让它们知道您已收到并且记录处于非活动状态。通过这种方式,您可以在1个表中进行跟踪,而无需进行大量连接来获取随时间发生的完整历史记录。 - 只是一个想法。