2012-01-05 27 views
3

不確定是否允許這樣做,但如果有的話,有人能告訴我T-SQL是什麼嗎?我試過以下,但無濟於事。您可以在SQL Server 2000的視圖中更改列長度嗎?

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

任何幫助表示讚賞。謝謝!

+1

長度不是來自底層表嗎? – Joe 2012-01-05 15:43:01

+0

視圖實際上只不過是一個命名的特定查詢。如果你想改變特定字段的大小,你需要修改底層查詢。這感覺就像你試圖將數據插入到視圖中一樣? – Yuck 2012-01-05 15:43:41

+0

這個問題的動機是什麼? – 2012-01-05 15:45:23

回答

5

不是直接。

這是從列表達式自動派生的。你可以將CAST列表中的表達式視爲SELECT列表中的特定數據類型。

3

您將需要改變列長度在基礎表,或更改SELECT語句形成投或CONVERT該柱具有不同的長度的數據類型的視圖。

1

視圖可以查看其他表中的數據;通常數據只是基礎表中的任何內容,所以您需要在那裏更改列。然而,你可以擁有像cast()或convert()這樣的事物的視圖。這些通常是一個壞主意,因爲每次使用視圖時都需要重新獲取數據,而這些操作會增加開銷。在視圖的設計中,您可以決定將其轉換爲另一種數據類型,或者進行任何您想要的轉換 - 但它有開銷,並且不會更改原始數據。

如果你知道當前視圖選擇,你可以使用類似:

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

我只是碰到了同樣的情況。我所做的是:

  1. 更改視圖查看錶中的列大小。

  2. 創建一個腳本來重新創建視圖(如果您還沒有的話)。

  3. 刪除視圖

  4. 使用腳本來重新創建視圖。

之後,視圖中的列大小與我對基礎表所做的更改相同。

1

由於視圖是從其他表派生的,因此無法更改視圖中的列大小。所以,如果您需要更改列大小,請更改表格的列大小。要更改列大小使用ALTER TABLE爲:

ALTER TABLE [表名]

ALTER COLUMN [COLUMN_NAME] DATA_TYPE(尺寸)

更改列大小之後,您可能需要刪除該視圖並重新創建它再次。

相關問題