【问题标题】:Can you change the column length in a view in SQL Server 2000?您可以更改 SQL Server 2000 中视图中的列长度吗?
【发布时间】:2012-02-03 10:31:41
【问题描述】:

不确定这是否允许,但如果允许,有人可以告诉我 T-SQL 是什么吗?我尝试了以下方法,但无济于事。

alter [View_Name]
alter column [Coln_Name] [New size/length] not null
GO

感谢任何帮助。谢谢!

【问题讨论】:

  • 长度不是来自底层表吗?
  • 视图实际上只不过是一个命名的即席查询。如果要更改特定字段的大小,则需要修改基础查询。这感觉就像您正在尝试将数据插入到视图中?
  • 这个问题的动机是什么?

标签: sql-server tsql sql-server-2000


【解决方案1】:

不直接。

这是从列表达式自动派生的。不过,您可以将 View SELECT 列表中的表达式 CAST 设置为特定的数据类型。

【讨论】:

    【解决方案2】:

    您需要更改基础表中的列长度,或者将形成视图的 SELECT 语句更改为 CAST 或 CONVERT 列到不同长度的数据类型。

    【讨论】:

      【解决方案3】:

      视图是查看其他表中数据的方式;通常数据只是基础表中的任何内容,因此您需要更改那里的列。

      但是,您可以拥有执行 cast() 或 convert() 等操作的视图;这些通常是一个坏主意,因为每次使用视图时都需要重新获取数据,并且这些操作会增加开销。在视图的设计中,您可以决定转换为另一种数据类型,或者进行任何您想要的转换 - 但它有开销,并且不会改变原始数据。

      如果你知道当前视图选择了什么,你可以使用类似的东西:

      Alter view Viewname[cloumn] as Select cast(original_data as varchar(n)) from Original_Table
      

      【讨论】:

        【解决方案4】:

        您不能更改视图中的列大小,因为视图是从其他表派生的。所以如果你需要改变列的大小,改变表格的列大小。要更改列大小,请使用 ALTER TABLE as :

        ALTER TABLE [Table_Name]

        ALTER COLUMN [Column_Name] Data_Type(Size)

        更改列大小后,您可能需要删除视图并重新创建它。

        【讨论】:

          【解决方案5】:

          如果视图中显示的长度与基础表不匹配,则删除并重新创建视图。

          使用类似的方法来调查表格和视图中的列长度

          SELECT o.[name], *
          FROM sys.all_columns c
          INNER JOIN sys.objects o on o.[object_id]=c.[object_id]
          WHERE c.[name] = 'OML'
          -- AND c.[max_length]=11
          ORDER BY O.[name];
          

          要获得 Drop and Create sql,我使用 SSMS 并右键单击上下文菜单(在对象资源管理器中的视图上),然后转到“Script View as”和“DROP And CREATE To”。

          【讨论】:

            【解决方案6】:

            我刚刚遇到了同样的情况。我所做的是:

            1. 更改视图查看的表中的列大小。

            2. 创建一个脚本来重新创建视图(如果您还没有的话)。

            3. 删除视图

            4. 使用脚本重新创建视图。

            之后视图中的列大小与我对基础表所做的更改相同。

            【讨论】:

              猜你喜欢
              • 2022-08-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多