【问题标题】:How can i store old and new updated value at same time?如何同时存储新旧更新值?
【发布时间】:2015-04-02 06:38:03
【问题描述】:

我已经建立了一个数据库:

slots(user_id,current_slots,old_slots,current_expiry,old_expiry);   
credit_transfer(transfer_id, sender_id, receiver_id,date,num_slots);  
history(history_id, reseller_id,transfer_id)

user_id 来自用户表。
sender_id 和receiver_id 是user_id 的外键。
reseller_id 是用户表的外键

当用户购买新的 slot 时,它的条目会以新的历史 id 记录在历史表中,即来自 slot 表。

我面临的问题是添加新的history_id时,即添加新插槽时,具有先前历史ID的插槽也会更新。

我怎样才能改变设计,使旧的历史 id 行不会改变。

【问题讨论】:

  • 给我们一个例子,没有 ids,添加“新槽”之前和之后的表。
  • 之前:History_id reseller_id transfer_id current_slots old_slots 1 1 1 20 10 之后:1 1 1 30 20 , 2 1 2 30 20 问题是具有旧历史 id 的插槽也被更改。如何应对?
  • 您的意思是说要更改 id=42 的记录,而 id=37 的记录也会无缘无故地更改?如果是这种情况,那么数据库不只是决定自己更新记录,您必须在某处有代码或触发器来更改它。如果您的意思是您有两个历史记录指向相同的插槽记录,并且当您更新插槽时,两个历史记录现在都指向相同的更新记录,那么如果您需要保留旧数据,大概需要创建两个插槽记录,或相关数据应记入历史记录。 ...
  • ... 总而言之,我认为您需要对您要在这里完成的工作进行更多解释。目前的问题尚不清楚。

标签: mysql database-design


【解决方案1】:

嗯,最简单的做法是对 userId 设置唯一约束。这将确保您没有相同用户条目的重复项。

我不确定您当前使用的是什么语言,或者您是否使用存储过程。但无论如何,检测重复/唯一约束异常并更新槽数或过期信息。

【讨论】:

  • 是的,但不希望 userid 是唯一的,可能有多个用户条目。甚至不能使插槽唯一,因为 2 个用户可能有相同的插槽
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多