我的问题描述: 例如,我有一个表“项目”和列“id”,“名称”,“颜色”,但由于一些奇怪的原因(请不要问为什么 - 这不是我)在“颜色”列中有关于该项目的信息,它本质上应该被称为“描述” 项目中的许多代码都依赖于它,只需重命名列名称将花费大量时间。
问题: 有没有办法创建某种指向该列的指针并正确调用它,以便下面的sql将按预期工作:
select i.id, i.name, i.description from Item i
(它会知道当我输入“description”时,它应该会查看“color”列。
答案 0 :(得分:2)
简答:不。答案很长:您可以在Oracle中创建插入和更新触发器,始终保持这些列同步。但是,最好的办法是使用它,或重命名并修复代码。拥有触发器并将数据存储在两列中只是为了让您的旧代码不会中断,但让新代码使用新列对我来说就像一个反模式。坦率地说,即使Oracle DID具有开箱即用的要求,它仍然感觉像是一种反模式。作为一名开发人员,我会用以下的方式摸不着头脑:“让我们看看我们选择的所有地方color
。”糟糕,您错过了使用description
的所有地方。尝试走这条路似乎很困惑。再次,我建议与它一起生活,或花时间用新的正确名称更新项目
答案 1 :(得分:1)
您可以使用正确命名的列创建可更新视图。
答案 2 :(得分:0)
这称为列别名,例如clunky
select BB from
(select column1 AA, column2 BB, column3 CCC from mytable);