У меня есть таблица mysql, как показано ниже,
CREATE TABLE IF NOT EXISTS 'sometable' (
'field1' varchar(36) NOT NULL,
'field2' varchar(36) NOT NULL,
'field3' varchar(36) NOT NULL,
'field4' varchar(36) NOT NULL,
PRIMARY KEY ('field1', 'field2')
UNIQUE KEY 'field3' ('field3')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
В каком контексте запись в эту таблицу будет рассматриваться как дубликат? Предположим, что у меня есть следующая запись в моей таблице.
-------------------------------------
| field1 | field2 | field3 | field4 |
|------------------------------------
| a | b | c | d |
-------------------------------------
Теперь, если я вставляю (field1,field2,field3,field4) values (a, b, cc, d)
, будет ли он дублировать ключевую ошибку? Или, рассмотрев единственное ограничение ключа, позволит ли эта запись вставить и сделать таблицу такой, как показано ниже?
-------------------------------------
| field1 | field2 | field3 | field4 |
|------------------------------------
| a | b | c | d |
-------------------------------------
| a | b | cc | d |
-------------------------------------
Это происходит через дублируемую ошибку записи, если любое из уникальных ограничений ключа нарушено (первичный ключ считается уникальным ограничением ключа). Итак, если (field1, field2)
OR (field3)
, вы получите сообщение об ошибке.
Таким образом, ваши образцы данных будут нарушать ограничения, а вставка второй строки приведет к возникновению ошибки, потому что (field1, field2)
дублируются.