Как создать таблицу, в которой одно значение встречается только один раз для другого значения - PullRequest
0 голосов
/ 28 сентября 2019

Я хочу создать таблицу, в которой хранится посещаемость сотрудников. У меня есть 6 столбцов (код сотрудника, статус, время, время, общее время, дата). Я хочу создать таблицу таким образом, чтобыдата для кода сотрудника не должна повторяться, то есть посещаемость за один день сотрудника не может быть добавлена ​​снова.Есть ли способ, которым я могу сделать это.

1 Ответ

0 голосов
/ 28 сентября 2019

Чтобы гарантировать уникальность (employee_code, date) кортежей, вы можете просто сделать эти столбцы первичным ключом таблицы (или установить для него уникальное ограничение):

CREATE TABLE attendance (
    employee_code INT, 
    status INT, 
    in_time TIME, 
    out_time TIME, 
    total_time INT, 
    `date` DATE,
    PRIMARY KEY(employee_code, `date`)
);

Примечание: date isне очень хороший выбор для имени столбца, так как он конфликтует с омонимом типа данных MySQL.Я бы предложил выбрать другое имя.

Демонстрация на DB Fiddle :

Сначала создайте таблицу, затем вставьте один раз:

INSERT INTO attendance(employee_code, `date`) values (1, NOW());

При попытке снова вставить тот же кортеж, вы получите сообщение об ошибке:

Ошибка: ER_DUP_ENTRY: повторяющаяся запись '1-2019-09-28' для ключа 'PRIMARY'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...