Mysql таблица с ограничением как первичного, так и уникального ключа

0

У меня есть таблица 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   |
-------------------------------------
Теги:
primary-key

1 ответ

0
Лучший ответ

Это происходит через дублируемую ошибку записи, если любое из уникальных ограничений ключа нарушено (первичный ключ считается уникальным ограничением ключа). Итак, если (field1, field2) OR (field3), вы получите сообщение об ошибке.

Таким образом, ваши образцы данных будут нарушать ограничения, а вставка второй строки приведет к возникновению ошибки, потому что (field1, field2) дублируются.

  • 0
    Таким образом, он не будет проверять ограничения в совокупности. Правильно?
  • 0
    @Mediocre правильно, ограничения оцениваются независимо друг от друга.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню