我想创建一个primary key(auto-increment)
以A001000001
. 这里A001
将是恒定的并且000001
会被迭代。
我想要这样的行:
如何使用 SQL 查询来做到这一点?
我想创建一个primary key(auto-increment)
以A001000001
. 这里A001
将是恒定的并且000001
会被迭代。
我想要这样的行:
如何使用 SQL 查询来做到这一点?
对于SQL Server(您没有明确指定您使用的是哪个 RDBMS),我的建议是:
INT IDENTITY
列 - 坦率地说,我会将该列作为主键就像是:
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)
您可以创建 BEFORE INSERT 触发器,检查 MAXid
值,递增它,添加前缀,然后插入。
它比你想象的要容易得多;)
创建表 bob ( id MEDIUMINT NOT NULL AUTO_INCREMENT, foo CHAR(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM;