У меня есть база данных mySQL, и у меня есть скрипт Perl, который подключается к нему и выполняет некоторые манипуляции с данными. Одна из таблиц в БД выглядит следующим образом:Как проверить, существует ли значение в базе данных mySQL?
CREATE TABLE `mydb`.`companies` (
`company_id` INT NOT NULL AUTO_INCREMENT,
`company_name` VARCHAR(100) NULL ,
PRIMARY KEY (`company_id`));
Я хочу, чтобы вставить некоторые данные в этой таблице. Проблема в том, что некоторые компании в данных могут быть повторены.
Вопрос: Как проверить, что «имя_компании» уже существует? Если он существует, мне нужно получить «company_id» и использовать его для вставки данных в другую таблицу. Если это не так, то эту информацию следует ввести в эту таблицу, но у меня уже есть этот код.
Вот некоторые дополнительные требования: Сценарий можно запускать несколько раз одновременно, поэтому я не могу просто прочитать данные в хэш и проверить, существует ли он уже.
Я могу добавить дополнительный запрос «SELECT», но это создаст дополнительный удар по БД.
Я попытался найти ответ, но каждый вопрос здесь или поток в Интернете говорят об использовании проверки первичного ключа. Мне это не нужно. Структура БД уже установлена, но я могу внести изменения, если это необходимо. Эта таблица будет использоваться в качестве дополнительной таблицы.
Есть ли другой способ? Как в DB, так и в Perl.
Название компании должно быть частью первичного ключа, у вас не было бы проблем, если бы вы это сделали. – Mat
Хорошая точка, Матем. Я добавил, что в качестве варианта 2 в своем ответе. –
InnoDB или MyISAM? –