【发布时间】:2011-10-18 08:16:02
【问题描述】:
假设Products 表中有一个Price 列,价格可能会发生变化。
我可以更改它,但我想将原始 Price 值存储在另一列中。
MS SQL 服务器是否可以自动执行此操作?
我可以使用 默认值 字段吗?
我必须声明触发器吗?
更新
我尝试使用Price 来简化问题,但看起来这引发了“使用单独的表格”类型的答案。
对我造成的混乱,我深表歉意。
在现实世界中,我需要存储一个外键 ID,我 100% 只需要 current 和 original 值 .
更新 2
我对建议的不同方法感到有些困惑,所以请让我再次解释一下情况。
虚构的Products 表具有三个字段:ID、Price 和OriginalPrice。
我想在任何插入上将OriginalPrice 设置为Price 值。
有时它是由代码创建的单一产品。有时,一个存储过程中的单个insert 创建了数千种产品,所以我也想正确处理这些产品。
一旦设置了OriginalPrice,我就不再打算更新它了。
希望我的问题现在更清楚了。
感谢您的努力。
最终更新
我要感谢大家,特别是 @gbn,感谢他们的帮助。
虽然我发布了my own answer,但它主要基于@gbn's answer 和他的进一步建议。他的回答也比较完整,所以我标记为正确。
【问题讨论】:
标签: sql sql-server sql-server-2008 default-value alter-table