После того, как я попытался вставить строку в базу данных, и она не удалась из-за дублирования (не столкновение первичного ключа - другой ключ), как я могу получить первичный ключ сталкивающейся строки, которая помешала вставке?
Пример:
Стол:
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;
Некоторые исходные данные:
INSERT INTO `my_table`(`unique_value`) VALUES ('unique string 1');
INSERT INTO `my_table`(`unique_value`) VALUES ('unique string 2');
А теперь это не удастся из-за коллизии в индексе:
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();
Могу ли я получить первичный ключ сталкивающейся строки, не делая еще один запрос?