我有一个名字很差的专栏,我想重命名。列名是隐藏的“陷阱”的缺点,因为它的名称具有误导性。
问题是现有程序使用该列。有没有办法在DB中重命名它并在DB中创建某种别名,以便现有程序可以使用旧名称查询(不更新或插入)表?
答案 0 :(得分: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 Tools或Red-Gate's SQL Refactor),但如果您的程序引用其编译代码中的列,则会更加复杂。 (使用存储过程的原因之一可能是比在应用程序中嵌入SQL更好的选择。)