【发布时间】:2013-02-21 05:17:24
【问题描述】:
您好,我正在做一个项目,我必须通过单击按钮将一些值存储在数据库中。这是创建表的代码:
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),
)
在此表中,我添加了一些值。现在我的要求是 partner id 和 partner code 值应该来自 s.no 值。例如,如果我的 s.no 值为 '1',则 partnerid 和 parnter code 值应为'part01' 和 'pc01' 分别。我知道创建新表并使用我的条件的代码。这是我可以使用的代码:
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),
)
但是使用上面的代码意味着我必须重新创建表。所以我的问题是我可以在不重新创建表格的情况下对 partner id 和 partner code 应用上述条件(因为我已经在表格中有一些重要的数据) ?提前致谢
【问题讨论】:
-
为什么要重新创建表?您可以删除两列并使用您想要的定义创建新列(请参阅
ALTER TABLE),而不会影响表的其余部分。或者您的意思是您的 PartnerID 和 PartnerCode 列中的现有值不适合您的公式,但您仍然希望保留它们并且只将公式用于新行?附带说明一下,在列名中使用空格通常是个坏主意:它会在脚本和编程方面产生各种“小”问题。 -
@Pondlife 是的,这正是我想要的......即使我反对在列名中使用空格,但我的团队遵循一定的命名空间,所以我必须使用它
标签: sql sql-server sql-server-2008