我想创建一个以A001000001开头的primary key(auto-increment)。在这里,A001将是常量,000001将是迭代。
我想要这样的行:

如何使用SQL query执行此操作?
发布于 2012-08-28 12:59:47
对于SQL Server (您没有明确指定您使用的是哪种关系数据库),我的建议是:
添加前缀
类似于:
CREATE TABLE dbo.YourTable
( ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
EmpID AS 'A001' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 7) PERSISTED
)这样,如果您插入一行,ID将自动设置,EmpID也将自动设置为A0010000001、A0010000002等值。以此类推。
如果您希望将主键放在EmpID列上,则需要确保在创建它时包含NOT NULL规范:
CREATE TABLE dbo.YourTable
( ID INT IDENTITY(1,1),
EmpID AS 'A001' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 7) PERSISTED NOT NULL
)然后,您可以将主键约束放在该列上:
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (EmpID)发布于 2012-08-28 14:45:20
您可以创建BEFORE insert触发器,选中MAX id值,递增该值,添加前缀,然后插入。
发布于 2013-01-08 10:14:07
这比你想象的要容易得多;)
创建表bob ( id MEDIUMINT NOT NULL AUTO_INCREMENT,foo CHAR(30) NOT NULL,PRIMARY KEY (id) ) ENGINE=MyISAM;
https://stackoverflow.com/questions/12152960
复制相似问题