首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取插入失败时冲突行的主键?

如何获取插入失败时冲突行的主键?
EN

Stack Overflow用户
提问于 2019-04-14 22:21:30
回答 2查看 102关注 0票数 1

在我尝试向数据库中插入一行,但由于重复(不是主键冲突-另一个键)而失败后,如何获取阻止插入的冲突行的主键?

示例:表:

代码语言:javascript
复制
CREATE TABLE `my_table` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `unique_value` varchar(60) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_data` (`unique_values`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

一些初始数据:

代码语言:javascript
复制
INSERT INTO `my_table`(`unique_value`) VALUES ('unique string 1');
INSERT INTO `my_table`(`unique_value`) VALUES ('unique string 2');

现在,由于索引中的冲突,这将失败:

代码语言:javascript
复制
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO `my_table`(`unique_value`) VALUES 'unique string 2'";
comm.ExecuteNonQuery();
conn.Close();

我可以在不进行另一个查询的情况下获得冲突行的主键吗?

EN

回答 2

Stack Overflow用户

发布于 2019-04-14 22:30:38

在创建表时,您可以使用"Identity“关键字,它将执行所有"not null and Auto Increment”操作。但这是针对MsSQL的,试试这个:

代码语言:javascript
复制
create table my_table
(
    ID int Primary key identity,
    unique_value varchar(60) NOT NULL
)
票数 0
EN

Stack Overflow用户

发布于 2019-04-14 23:32:20

正如你所说的,你不担心PK,因此你可以检查列的值,它有唯一的index.If,已经有一个raw与你在新行中传递的值,然后你试图插入重复,否则就不是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55676306

复制
相关文章

相似问题

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