Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在SQLServer2005中创建主键A1/D-M/100000?_Asp.net_Sql Server_Vb.net - Fatal编程技术网

Asp.net 如何在SQLServer2005中创建主键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(取决于我计

如何在Visual Studio 2008中的SQL Server 2005中创建一个主键A1/D-M/100000?

使用
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
    
这样,SQL Server将自动递增您的
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个字节的开销?@Randolph
varchar
占用的空间不会比content@Adrian,varchar将取数据的实际长度加上2个字节(不是我最初说的3个字节)。查看更多信息。该键的哪些部分是固定的,哪些部分会随着行的变化而变化??例如,“A1”或“D-M”来自哪里?它们对所有行都一样吗?它们会在一排之间变化吗??