У меня общая проблема. Я читаю по всему Google, но моя проблема немного более странная.
У меня есть таблица, я использую эти первичные ключи:
ALTER TABLE `companies`
ADD PRIMARY KEY(
`name_employee`,
`email`);
Таким образом, первичный ключ представляет собой сочетание name_employee
А ТАКЖЕ email
,
Проблема с примерами (я даю только вставки первичного ключа, так как другие не первичны и работают как положено):
Первая вставка в порядке:
name_employee = 'Pavlos Pavlos'
email = 'company_Name@gmail.com'
Вторая вставка ОК:
name_employee = 'John John'
email = 'company_Name@gmail.com'
Третья прошивка BAD:
name_employee = 'Nick Nick'
email = 'company_Name@gmail.com'
Ошибка, которая выскакивает:
Ошибка: INSERT INTO компании (имя, номер_счета, dateExp,
credit_limit, amount_debt, остаток, name_employee, id_employee,
электронная почта, пароль) ВЫБЕРИТЕ имя, account_number, dateExp, credit_limit,
сумма_дебета, баланс, «Ник Ник», «250», «company_Name@gmail.com»,
‘пропустить’ ОТ компаний ГДЕ email=’company_Name@gmail.com ‘
Дублирующая запись ‘Nick Nick-company_Name@gmail.com’ для ключа ‘PRIMARY’
Но нет другого ряда с name_employee = Nick Nick
а также email = company_Name@gmail.com
,
Что действительно странно, так это то, что он позволяет мне сделать вторую вставку с тем же email
но другой name_employee
, но это не позволяет мне сделать то же самое для трети и так далее.
Любая помощь, пожалуйста?
РЕДАКТИРОВАТЬ:
Это назначение, и я не могу добавить больше ключей / первичных ключей и т. Д.
Также в одной компании мне нужно много сотрудников, и мы можем предположить, что name_employee отличается для каждого, поэтому я использовал эти первичные ключи.
Этот запрос
SELECT
name, account_number, dateExp, credit_limit, amount_debt, balance,
'Nick Nick', '250', 'company_Name@gmail.com', 'pass'
FROM companies
WHERE email='company_Name@gmail.com'
выбирает строки из таблицы companies
где email
равняется 'company_Name@gmail.com'
, Это верно для двух строк ('Pavlos Pavlos'
а также 'John John'
). Итак, вы пытаетесь вставить 'Nick Nick'
дважды. Отсюда и ошибка.
.
Других решений пока нет …