Насколько я знаю, если вы отмечаете несколько столбцов в качестве Первичных ключей, их кортеж будет фактическим Первичным ключом, тем самым, учитывая 2 основных ключа в таблице, несколько строк у меня есть одна и та же запись для 1 из Первичных ключей если они не имеют 2 совпадений с любой другой строкой. Я прав? И если да, то работают ли уникальные ограничения одинаково? Я чувствую, что было бы полезно иметь структуру, сродни основному ключу, но ее сравнение с ключами других строк OR'd вместо AND'd, поэтому не могло быть совпадений вместо n-1 потенциала совпадений, заданных n Первичных ключей для каждой строки.У основных ключей и уникальных ограничений кортеж таким же образом?
ответ
Ваше описание функционально корректно, но терминология неверна.
Для любого стола есть один и только один PRIMARY KEY
. Если вы используете модификатор PRIMARY KEY
с более чем одним столбцом, это означает, что каждый столбец становится элементом ключа, а не двумя (или более) PRIMARY KEY
.
UNIQUE
ограничения работают так же, как первичные ключи, кортеж элементов в ограничении должен быть уникальным среди всех строк.
Однако я не совсем понимаю остальную часть вашего вопроса, и я считаю, что это имеет смысл только в контексте недоразумения в отношении элементов ограничения или UNIQUE
, обрабатываемых отдельно.
Если у вас есть составной PRIMARY KEY
, и вы хотите убедиться, что каждый отдельный столбец в ключе также уникален, вам потребуется отдельное ограничение UNIQUE
на каждом из столбцов, составляющих PRIMARY KEY
. Это звучит как чрезвычайно странное требование, которое заставляет меня думать, что вы на самом деле храните кучу разных предметов в одной таблице.
- 1. Сколько уникальных ключей есть у моих data.table?
- 2. Генерация повторяющихся уникальных имен ограничений
- 3. Два основных класса ключей
- 4. Перемешать 2 PHP массивы таким же образом
- 5. Как обрабатывать несколько переменных таким же образом?
- 6. Перемешать два списка таким же образом
- 7. Как получить строковый массив всех ключей из словаря и изменить каждую строку таким же образом
- 8. Обработать слова, разделенные пробелами таким же образом
- 9. Сортировка нескольких массивов таким же образом Javascript
- 10. Выполнение уникальных ограничений в GAE
- 11. Рандомизируйте два массива таким же образом Swift
- 12. Перемешать несколько JavaScript массивов таким же образом
- 13. Несколько внешних ключей и несколько ограничений
- 14. Нет уникальных ограничений, связанных с заданными клавишами
- 15. Удаление всех основных ключей
- 16. Несколько уникальных ограничений в JPA
- 17. UIBarButtonItem не показан таким же образом в UIToolBar и UINavigationBar
- 18. Буферы протокола. Почему int32 и sint32 сопоставляются таким же образом?
- 19. Любые альтернативы NSDictionary для уникальных ключей и уникальных значений?
- 20. Сделайте размер и положение div таким же, как у видео
- 21. несколько уникальных ключей в NHibernate
- 22. Проверка уникальных ключей в коллекции
- 23. Как получить неподходящие записи из уникальных ключей?
- 24. Создать таблицу уникальных внешних ключей
- 25. Mongo DB Несколько основных ключей
- 26. Сколько ограничений у google api?
- 27. Количество уникальных значений для каждого уникальных ключей в словаре питона
- 28. Обновление уникальных или первичных ключей в MySQL
- 29. MySQL несколько уникальных ключей, недостаток
- 30. Наследование таблиц: Обеспечение уникальных ограничений для разделов?
В какой базе данных вы используете несколько первичных ключей? Это не разрешено в postgres. Кроме того, это просто не имеет смысла. :) –
На самом деле, Postgres (который нигде не упоминается в вопросе) не позволяет инструкции 'CREATE TABLE' указывать' PRIMARY KEY' рядом с каждым элементом ключа (в качестве альтернативы ограничению на уровне таблицы) и это, вероятно, то, что ПУ путают. –
@LarryLustig: Вы имеете в виду, что PostgreSQL позволяет что-то вроде этого? 'create table test (первичный ключ int, b int primary key);' –