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