Как я могу определить составной первичный ключ в SQL?

Никакие браузеры не обрабатывают 301 и 302 ответа правильно. И на самом деле в стандарте даже говорится, что они должны обработать их "прозрачно", который является ОБШИРНОЙ головной болью для поставщиков Библиотеки Ajax. В Ajax Ра мы были принуждены к использованию Кода состояния ответа HTTP 278 (просто некоторый "неиспользованный" код успеха) для обработки прозрачно перенаправлений с сервера...

Это действительно раздражает меня, и если бы у кого-то здесь есть некоторое "получение по запросу" в W3C, я ценил бы, что Вы могли позволить W3C знать , что мы действительно должны обработать 301 и 302 кода сами...!;)

98
задан Kevin Brown 4 March 2016 в 15:32
поделиться

2 ответа

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

CREATE TABLE voting (
  QuestionID NUMERIC,
  MemberID NUMERIC,
  PRIMARY KEY (QuestionID, MemberID)
);

Пара (QuestionID, MemberID) должна быть уникальной для таблицы, и ни одно из значений не может быть NULL. Если вы выполните такой запрос:

SELECT * FROM voting WHERE QuestionID = 7

, он будет использовать индекс первичного ключа. Однако если вы сделаете это:

SELECT * FROM voting WHERE MemberID = 7

, этого не произойдет, потому что для использования составного индекса необходимо использовать все ключи, расположенные «слева». Если индекс находится в полях (A, B, C), а ваши критерии - в B и C, то этот индекс вам не нужен для этого запроса. Поэтому выберите из (QuestionID, MemberID) и (MemberID, QuestionID) в зависимости от того, как вы будете использовать таблицу.

При необходимости, добавьте индекс на другой:

CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);
204
ответ дан 24 November 2019 в 05:13
поделиться
CREATE TABLE `voting` (
  `QuestionID` int(10) unsigned NOT NULL,
  `MemberId` int(10) unsigned NOT NULL,
  `vote` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`QuestionID`,`MemberId`)
);
6
ответ дан 24 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: