我有一个名称不佳的列,我想重命名它。列名是隐藏“陷阱”的责任,因为它的名称具有误导性。
问题是存在使用该列的现有程序。有没有办法在数据库中重命名它并在数据库中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)表?
我有一个名称不佳的列,我想重命名它。列名是隐藏“陷阱”的责任,因为它的名称具有误导性。
问题是存在使用该列的现有程序。有没有办法在数据库中重命名它并在数据库中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)表?
您可以创建一个添加列的非常基本的视图:
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 的 SQL Refactor)执行智能重命名,但如果您的程序在其编译代码中引用列,这将变得更加复杂。(使用存储过程的原因之一可能是比在应用程序中嵌入 SQL 更好的选择。)