CREATE TABLE Persons
(
P_Id varchar(6) NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
在这个表中P_Id
是主键。我们希望在开始时使用默认值 (PN00) 生成 P_Id
的自动增量,同时仅插入 LastName 和 FirstName。例如:-PN001 表示第一个条目,PN002 表示第二个条目,PN003 表示第三个条目,依此类推。
最佳答案
唯一可行的解决方案是使用
ID INT IDENTITY(1,1)
列让 SQL Server 处理数值的自动递增- 一个计算的、持久的列,用于将该数值转换为您需要的值
所以试试这个:
CREATE TABLE dbo.Persons
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
P_ID AS 'PN' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here....
)
现在,每次您在 Persons
中插入一行而不指定 ID
或 P_ID
的值时:
INSERT INTO dbo.Persons(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
然后 SQL Server 将自动且安全地增加您的 ID
值,并且 P_Id
将包含像 PN00001
这样的值、PN00002
、……等等——自动、安全、可靠、无重复。
关于sql-server - 使用 varchar 数据类型自动递增主键列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331265/