我有一个问题,当返回error sql唯一约束时,是否可能知道如何获得主键
我有表用户(id主键标识,用户名,电子邮件,密码)
N.B:(用户名,电子邮件)是唯一的
我插入(toto,toto@test.com,pass)结果:1行插入db (1,toto,toto@test.com,pass)
插入后(toto、toto@test.com、pass)结果:错误唯一约束(用户名、电子邮件)
这是正常的,因为我已经创建了一个约束--我想知道触发约束的行的主键,我的意思是1
发布于 2018-01-10 15:37:16
我认为这是处理这种情况的错误方法。您应该预先测试它,但是如果您真的想要测试它:
DECLARE @username nvarchar(50) = 'toto';
DECLARE @email nvarchar(50) = 'toto@test.com';
begin try
insert into [user](username, email) values (@username, @email)
end try
begin catch
if ERROR_NUMBER() = 2601
BEGIN
DECLARE @Msg nvarchar(500);
set @Msg = 'The combination of user ' + @username + ', email ' + @email + ' is already in use by the id ' + (SELECT cast(id as varchar(10)) from [user] where username = @username and email = @email)
print @Msg
END
end catchhttps://stackoverflow.com/questions/48190495
复制相似问题