2013-02-09 3 views
0

Как вставить новые поля, даже если это поле является дубликатом моего первичного ключа.Вставка дубликатов ключей на mySQL

У меня есть 6 полей в моем столе - Employee_Number, Week_number, Time_in, Time_out, Hours, Overtime Employee_number, week_number и day составляют составной ключ.

Я только что заметил, что если работник (500456) наступил на неделю номер 4 в понедельник, они не смогут наблюдать во вторник той же недели. Есть ли SQL-запрос, который я могу исправить?

Это то, что у меня есть;

"INSERT INTO daily_calculations (EMPLOYEE_NUMBER, WEEK_NUMBER, DAY, TIME_IN, TIME_OUT, HOURS, OVERTIME)" 
sqlquery2 = sqlquery2 + "VALUES ('" & ENumber & "','" & WeekNum & "', '" & day & "', '" & StartTime & "', '" & EndTime & "'," 
sqlquery2 = sqlquery2 + "'" & Hours & "', '" & Overtime & "');" 
+0

Почему бы не включить 'DAY' в вашей составной ключ? Это сделает каждый ключ уникальным, не так ли? –

+0

Моя ошибка, это часть составного ключа – Thaitan

+0

Я думаю, что ваша предпосылка неверна. Понедельник и вторник - разные дни на той же неделе, и поскольку ДЕНЬ является частью вашего ключа, вставка «Вторник» не подведет. – BellevueBob

ответ

1

Попробуйте INSERT IGNORE...

Если вы используете ключевое слово IGNORE, ошибки, возникающие при выполнении INSERT заявлений рассматриваются как предупреждения вместо этого. Например, без IGNORE строка, которая дублирует существующий индекс UNIQUE или значение PRIMARY KEY в таблице, вызывает ошибку с повторяющимся ключом, и оператор прерывается. С IGNORE строка все еще не вставлена, но ошибка не выдается.

Documentation

+0

Это не то, что я хочу, хотя, если бы он проигнорировал это, ошибка не возникла бы, но запись все равно не будет вставлена. Итак, если сотрудник поступил в понедельник, остальная часть недели не будет вставлена. Я думаю, или я ошибаюсь? – Thaitan

Смежные вопросы