2009-01-20 62 views
1

我想在表中創建一個持久計算的列,以便我可以將它用作到另一個表的外鍵關係的一部分。如何指定計算的varchar列的寬度?

我有這些表:

活動(事件ID唯一標識符,EVENTCODE VARCHAR(8)) - EVENTCODE是一個鑑別列

締約方(事件ID唯一標識符)

...我想向「締約方」添加EventCode列,以便外鍵約束可以同時包含這兩列。

我已經試過這樣:

ALTER TABLE Parties ADD EventCode AS 'PARTY' PERSISTED 

但是,增加的,我不知道列,CHAR(5)或東西(因爲該列的類型是從表達推斷)。所以我不能把它和Events.EventCode關聯起來,因爲這兩列有不同的寬度。

有沒有一種方法來指定計算列的寬度,還是我必須這樣做(這看起來很醜但我認爲會起作用)?

ALTER TABLE Parties ADD EventCode AS CAST('PARTY' AS varchar(8)) PERSISTED 

回答

3

您需要將值轉換爲所需的大小和數據類型。將一個靜態字符串放入SQL Server中將使用CHAR,因爲這比VARCHAR更具成本效益。

如果你不想在定義中使用CAST,那麼你需要將值填充到8個字符'PARTY',然後在進行連接時將其轉換爲VARCHAR(這會導致數據庫性能下降)。

+0

謝謝mrdenny。令人失望的,但我想這只是一次性的打擊,因爲它是持續存在的,所以它會創建一個行。 – 2009-01-20 02:38:25