Sql server 如何使用nvarchar在sql server中添加自动增量主键?
如何在SQL Server 2008 Express中使用Sql server 如何使用nvarchar在sql server中添加自动增量主键?,sql-server,sql-server-2008,sqldatatypes,Sql Server,Sql Server 2008,Sqldatatypes,如何在SQL Server 2008 Express中使用nvarchar数据类型生成自动递增主键?我希望我的输出主键如下所示: Id Name A1 AAA A2 BBB 谢谢很简单。你不能。自动增量仅适用于数字类型 相反,添加一个int或bigint自动增量主键,并使用a生成其他nvarchar列 最后,您可以在计算列上执行此操作。您不能直接执行此操作-您可以执行以下操作: 创建自动增量列以处理数字零件 添加一个连接字符串前缀和数字的计算列
nvarchar
数据类型生成自动递增主键?我希望我的输出主键如下所示:
Id Name
A1 AAA
A2 BBB
谢谢很简单。你不能。自动增量仅适用于数字类型 相反,添加一个
int
或bigint
自动增量主键,并使用a生成其他nvarchar
列
最后,您可以在计算列上执行此操作。您不能直接执行此操作-您可以执行以下操作:
- 创建自动增量列以处理数字零件
- 添加一个连接字符串前缀和数字的计算列
CREATE TABLE dbo.YourTable
(ID INT IDENTITY(1,1) NOT NULL,
StringPrefix NVARCHAR(10) NOT NULL,
IDandPrefix AS ISNULL(StringPrefix + CAST(ID AS NVARCHAR(10)), 'X') PERSISTED
)
INSERT INTO dbo.YourTable(StringPrefix) VALUES('A'), ('B'), ('A')
ID StringPrefix IDandPrefix
1 A A1
2 B B2
3 A A3
现在,当您插入这样的行时:
CREATE TABLE dbo.YourTable
(ID INT IDENTITY(1,1) NOT NULL,
StringPrefix NVARCHAR(10) NOT NULL,
IDandPrefix AS ISNULL(StringPrefix + CAST(ID AS NVARCHAR(10)), 'X') PERSISTED
)
INSERT INTO dbo.YourTable(StringPrefix) VALUES('A'), ('B'), ('A')
ID StringPrefix IDandPrefix
1 A A1
2 B B2
3 A A3
您应该得到如下行:
CREATE TABLE dbo.YourTable
(ID INT IDENTITY(1,1) NOT NULL,
StringPrefix NVARCHAR(10) NOT NULL,
IDandPrefix AS ISNULL(StringPrefix + CAST(ID AS NVARCHAR(10)), 'X') PERSISTED
)
INSERT INTO dbo.YourTable(StringPrefix) VALUES('A'), ('B'), ('A')
ID StringPrefix IDandPrefix
1 A A1
2 B B2
3 A A3
您也可以在IDandPrefix
列上定义主键:
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (IDandPrefix)
另一种解决方法是将Id的默认值设置为可以派生下一个值的函数 功能(SQL Server 2008): 功能(SQL Server 2012): 设置默认值:
ALTER TABLE [dbo].[MyTable] ADD CONSTRAINT [DEFAULT_Id] DEFAULT [dbo].[fx_GetNextMyTableId]() FOR [Id]
是的,我同意你的看法