首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当返回错误Sql唯一约束时,sql server获得主键

当返回错误Sql唯一约束时,sql server获得主键
EN

Stack Overflow用户
提问于 2018-01-10 15:14:11
回答 1查看 193关注 0票数 0

我有一个问题,当返回error sql唯一约束时,是否可能知道如何获得主键

我有表用户(id主键标识,用户名,电子邮件,密码)

N.B:(用户名,电子邮件)是唯一的

我插入(toto,toto@test.com,pass)结果:1行插入db (1,toto,toto@test.com,pass)

插入后(toto、toto@test.com、pass)结果:错误唯一约束(用户名、电子邮件)

这是正常的,因为我已经创建了一个约束--我想知道触发约束的行的主键,我的意思是1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 15:37:16

我认为这是处理这种情况的错误方法。您应该预先测试它,但是如果您真的想要测试它:

代码语言:javascript
复制
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 catch
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48190495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档