2013-02-20 53 views
0

您好,我正在一個項目,我必須在數據庫中存儲一些值,點擊一個按鈕。這是創建表的代碼:修改sql表中已包含數據的列的後續值

create table dbo.Cpecial_Partner_Info_tbl 
( 
[S.No] int identity(1,1), 
[Partner ID] varchar(20), 
[Partner Code] varchar(20), 
[Partner Name] varchar(100), 
[Partner Type] varchar(15), 
[User ID] varchar(50) primary key, 
[Password] varchar(50), 
) 

在這張表中我增加了一些值。現在我的要求是,合作伙伴ID合作伙伴代碼值應該來自s.no值。例如,如果我的s.no值爲 '' 中,PARTNERIDPARNTER代碼值應爲 'part01' 和 'PC01' RESP。我知道創建一張新桌子並使用我的條件的代碼。這是我可以使用的代碼:

create table dbo.Cpecial_Partner_Info_tbl 
( 
[S.No] int identity(1,1), 
[Partner ID] as 'PART' + right('0' + Convert(VarChar(10), [S.No]), 1) persisted, 
[Partner Code] as 'PC' + right('0' + Convert(VarChar(10), [S.No]), 1) persisted, 
[Partner Name] varchar(100), 
[Partner Type] varchar(15), 
[User ID] varchar(50) primary key, 
[Password] varchar(50), 
) 

但是使用上面的代碼意味着我必須重新創建表。所以我的問題是我可以應用上述條件合作伙伴ID合作伙伴代碼而不重新創建表(因爲我已經在表中有一些重要的數據)?在此先感謝

+0

爲什麼你需要重新創建表?您可以刪除兩列並使用所需的定義創建新列(請參閱['ALTER TABLE'](http://msdn.microsoft.com/zh-cn/library/ms190273(v = sql.100).aspx ))而不會影響表格的其餘部分。或者您的意思是說,您在PartnerID和PartnerCode列中有不符合您的公式的現有值,但是您仍想保留它們,並且只將公式用於新行?另外值得一提的是,在列名中使用空格通常是一個壞主意:它會在腳本和編程中產生各種「小」問題。 – Pondlife 2013-02-20 14:51:06

+0

@Pondlife是的,這正是我想要的...即使我反對在列名稱中使用空格,但我的團隊正在遵循某些命名空間,所以我必須使用 – nitinvertigo 2013-02-21 05:16:14

回答

0

在將值插入表之前,請將slno的最大值作爲變量並將該變量設置爲所有3列。

+0

實際上我通過c#將值插入到表中。 .so我想我需要創建一個存儲過程來插入值。 – nitinvertigo 2013-02-20 13:03:00

0

你可以做的,以更新表格並保持數據如下: 1.具有相同的結構創建新表 2.從舊錶到新表 3.禁用數據複製舊錶的外鍵 4.更新舊錶 5.再次啓用外鍵

+0

如果不創建另一個表,不可能做到這一點? – nitinvertigo 2013-02-21 05:23:22

+0

不幸的是,這是我知道的唯一途徑。這麼晚纔回復很抱歉。 – 2013-02-25 11:22:54