Asp.net 如何在SQLServer2005中创建主键A1/D-M/100000?
如何在Visual Studio 2008中的SQL Server 2005中创建一个主键A1/D-M/100000?使用Asp.net 如何在SQLServer2005中创建主键A1/D-M/100000?,asp.net,sql-server,vb.net,Asp.net,Sql Server,Vb.net,如何在Visual Studio 2008中的SQL Server 2005中创建一个主键A1/D-M/100000?使用varchar(20)作为列类型,并从代码中生成主键值。您的请求在SQL Server中无法按要求执行,这使我想告诉您进行更多阅读 然而,正如Adrian Godong的回答所建议的那样,您可以通过在Visual Basic中创建主键,并将该值存储在SQL中的char或varchar字段中来实现类似的功能 也就是说,如果这是我的数据库,I将使用int或bigint(取决于我计
varchar(20)
作为列类型,并从代码中生成主键值。您的请求在SQL Server中无法按要求执行,这使我想告诉您进行更多阅读
然而,正如Adrian Godong的回答所建议的那样,您可以通过在Visual Basic中创建主键,并将该值存储在SQL中的char
或varchar
字段中来实现类似的功能
也就是说,如果这是我的数据库,I将使用int
或bigint
(取决于我计划存储的行数),并使用第二列作为char
或varchar
,以及适当的索引来存储Ax/D-m/xxxxxx
值
您想要做的是将业务规则与SQL Server的数据库规则混合,这是一个非常糟糕的主意。SQL不关心您的数据是什么样子的,所以您不应该强迫它这样做。您的业务规则可能会随之改变,如果您从正确的PK开始,这将更容易适应,而不依赖于某些任意的命名约定。该键的哪些部分是固定的,哪些部分会随行而改变 例如,“A1”或“D-M”来自哪里?它们对所有行都一样吗?它们会在一排之间变化吗 如果这些部分是固定的,只有中间的大数需要改变,你可以:
- 为编号定义一列类型为
ID INT IDENTITY(100000,1)
- 定义一个计算列,如下所示:
ALTER TABLE dbo.YourTable ADD YourPKField AS 'A1/D-M/' + CAST(ID AS VARCHAR(6)) PERSISTED
ID
字段,并且YourPKField
将包含以下值:
A1/D-M/100000
A1/D-M/100001
A1/D-M/100002
A1/D-M/100003
....
依此类推-自动执行,无需执行任何操作。使用INT标识(100000,1)作为主键。在需要时添加计算(显示)键(查询…)。这是装饰,因此,它是前端的一部分,而不是您的数据。当我使用。。int数据类型则递增种子为100000,自动递增1。。。。但我想在主键中显示为A1/D-M/100000阿德里安的建议是正确的。我觉得你对SQL不够熟悉,不能自己做这件事,所以也许你应该多读一些SQL和VB.NET的书,找个人在现实生活中帮助你。@Adrian,也许是
char(14)
,仅仅因为varchar
每行额外增加3个字节的开销?@Randolphvarchar
占用的空间不会比content@Adrian,varchar将取数据的实际长度加上2个字节(不是我最初说的3个字节)。查看更多信息。该键的哪些部分是固定的,哪些部分会随着行的变化而变化??例如,“A1”或“D-M”来自哪里?它们对所有行都一样吗?它们会在一排之间变化吗??