3

我有一个名称不佳的列,我想重命名它。列名是隐藏“陷阱”的责任,因为它的名称具有误导性。

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

4

1 回答 1

5

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

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 ToolsRed-Gate 的 SQL Refactor)执行智能重命名,但如果您的程序在其编译代码中引用列,这将变得更加复杂。(使用存储过程的原因之一可能是比在应用程序中嵌入 SQL 更好的选择。)

于 2012-07-16T15:15:13.987 回答