我有一张表,记录每次收取费用。复合键由以下组成:
- 时间戳
- 银行编号
- 分行号
- 运营商号码
- 钱箱号码
最后四个并不总是独自识别。 (这就是时间戳在那里的原因。)
退还费用后,我想从数据库中删除该行。我该怎么做呢?
答案 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个表中进行跟踪,而无需进行大量连接来获取随时间发生的完整历史记录。 - 只是一个想法。