表定义中的列别名?

pok*_*oke 3 sql sql-server-2008

我有一个名字很糟糕的专栏,我想重命名.列名是隐藏的"陷阱"的负担,因为它的名称具有误导性.

问题是现有的程序使用该列.有没有办法在DB中重命名它并在DB中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)表?

Aar*_*and 5

您可以创建一个添加列的基本视图:

CREATE VIEW dbo.tablename_v
AS
  SELECT a, oldname, newname = oldname FROM ...
Run Code Online (Sandbox Code Playgroud)

或者您可以添加计算列,如果您真的只需要SELECT:

ALTER TABLE dbo.tablename ADD newname AS CONVERT(datatype, oldname);
Run Code Online (Sandbox Code Playgroud)

请注意,在这两种情况下,可更新性都是一个问题,INSTEAD OF触发器可以帮助您解决这些问题.

但是,理想情况下,您将修复架构和代码.您还可以使用某些工具执行智能重命名(例如,SQL Server数据工具Red-Gate的SQL重构),但如果您的程序引用其编译代码中的列,则这将更加复杂.(使用存储过程的原因之一可能是比在应用程序中嵌入SQL更好的选择.)

  • +1-如果列级别支持SYNONYM,则将是理想选择! (2认同)