【问题标题】:Auto increment are not showing in select list when error occurred inserting duplicate values in unique key在唯一键中插入重复值发生错误时,选择列表中未显示自动增量
【发布时间】:2014-04-15 20:09:20
【问题描述】:

我正在创建一个包含 1 个标识列和 1 个唯一列的表。但是当我们在表中插入重复值时,它会按预期显示错误,但标识列增加了 1。这没有显示。我们的问题是为什么身份栏增加? 示例:-

create table test (
id int identity( 1,1) ,
name varchar(20) not null unique,
description varchar(100)
)

第一个插入命令:-

insert into test
values(‘Hello’,’India’)

再次运行相同的命令

insert into test
values(‘Hello’,’India’)

预期的错误

消息 2627,第 14 级,状态 1,第 1 行 违反 UNIQUE KEY 约束‘UQ__test__72E12F1B1571C0B7’。无法在对象“dbo.test”中插入重复键。重复键值为 (Hello)。 声明已终止。

insert into test
values(‘Hello Kalyan’,’India’)

那么输出是

id  name     description
1   Hello        India
3   Hello Kalyan India

为什么表中缺少 2?

请帮忙。

【问题讨论】:

    标签: sql


    【解决方案1】:

    尝试使用 SQL 命令 Get Scope Identity

    insert into test
    values(SELECT( SCOPE_IDENTITY),‘Hello’,’India’)
    

    作用域标识获取下一个唯一键值。

    【讨论】:

    • 这个答案与问题无关。因此投反对票。
    • @DanBracuk 哇,你说得对,很好的例子。你的权利真是个奇怪的问题。但是我的回答解决了问题..
    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2017-09-24
    • 2013-02-17
    • 2021-02-27
    • 2022-10-09
    相关资源
    最近更新 更多