よくある問題です。私はグーグルで読んだけど、私の問題はちょっと変だ。MySQL「PRIMARY」キーが重複していますが、少し奇妙です
私はこれらの主キーを使用してテーブルを持っている:
ALTER TABLE `companies`
ADD PRIMARY KEY(
`name_employee`,
`email`);
だから、主キーがname_employee
とemail
のcompinationです。
例(期待通りに他の人が主と働いていないとして、私は唯一の主キーの挿入を与える)での問題:
まず挿入OK:
name_employee = 'Pavlos Pavlos'
email = '[email protected]'
第二の挿入OK:
name_employee = 'John John'
email = '[email protected]'
第3挿入BAD:
name_employee = 'Nick Nick'
email = '[email protected]'
ポップアップ表示
エラー:
Error: INSERT INTO companies (name, account_number, dateExp, credit_limit, amount_debt, balance, name_employee, id_employee, email, password) SELECT name, account_number, dateExp, credit_limit, amount_debt, balance, 'Nick Nick', '250', '[email protected]', 'pass' FROM companies WHERE email='[email protected]' Duplicate entry 'Nick [email protected]' for key 'PRIMARY'
しかしname_employee = Nick Nick
とemail = [email protected]
と別の行がありません。本当に奇妙である何
は、それは私が同じemail
が異なるname_employee
と第2の挿入を行うことができますということですが、それは私が挿入時にそのため第三のために同じことを行うことはできません。
助けてください。
EDIT: これは割り当てていると私はより多くのキー/主キーを追加することはできませんなど また、私は同じ会社の下での従業員の多くを必要とし、我々はそのname_employeeはなぜだそれぞれに対して異なっていると仮定することができますこれらの主キーを使用しました。
insert-selectは2つの行を挿入しようとしています。表示するために選択を単独で実行します。 – Uueerdo
おそらく、それをプライマリキーにしたくない場合は、レコードを取得するのが本当に不愉快になり、他のテーブルからリンクする手間がかかります。単純な 'INT'プライマリを持ち、セカンダリ' UNIQUE'制約を作ります。 – tadman
@tadman最後に最初の投稿を確認して、編集しました。 – PavTze