我有一个名字很差的列,我想重命名。列名称是隐藏的“陷阱”,因为它的名称具有误导性。表定义中的列别名?
问题是现有的程序使用该列。有没有办法在数据库中重命名它,并在数据库中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)该表?
我有一个名字很差的列,我想重命名。列名称是隐藏的“陷阱”,因为它的名称具有误导性。表定义中的列别名?
问题是现有的程序使用该列。有没有办法在数据库中重命名它,并在数据库中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)该表?
您可以创建一个将一列一个非常基本的观点:
CREATE VIEW dbo.tablename_v
AS
SELECT a, oldname, newname = oldname FROM ...
或者你可以添加一个计算列,如果你真的只需要SELECT
:
ALTER TABLE dbo.tablename ADD newname AS CONVERT(datatype, oldname);
注意,可更新可两种情况下都有问题,而INSTEAD OF触发器可能会帮助您解决这些问题。
尽管如此,理想情况下,您需要修复架构和代码。您还可以使用某些工具执行智能重命名(例如,想起SQL Server Data Tools或Red-Gate's SQL Refactor),但如果您的程序在其编译的代码中引用列,这将变得更加复杂。 (使用存储过程的原因之一可能是将SQL嵌入到应用程序中的更好选择。)
+1 - SYNONYM将是理想的,如果它们在列级支持! – AdaTheDev 2012-07-16 15:17:11
您可以定义一个视图,其中的列是以旧名称命名的。 – 2012-07-16 15:13:15