Отправляет email-рассылки с помощью сервиса Sendsay

[TC] MySQL: связать два ключа

Vande omentaina, Tiflocomp!
Вот такой вопрос.
Необходимо, чтобы в таблице два ключа могли иметь взаимно уникальные
значения. то есть: если одно поле имеет значение 19, а второе, скажем,
3, то нужно, чтобы вторая такая строка (первое поле 19, второе 3)
просто не записалась бы.
Можно ли это как-то сделать?
Спасибо!

Ответить   Anarendil Sat, 12 Sep 2009 00:22:08 +0300 (#904636)

 

Ответы:

Здравствуйте, Anarendil.

Вы писали 12 сентября 2009 г., 1:22:08:

И Вам -- алейкум асалам.

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

CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY name (last_name,first_name));

Этот пример не позволяет ввести в таблицу одного человека два раза
(человека с совпадающими именем и фамилией). Из этого примера, кстати
сказать, видно, что подобные ограничители надо использовать с
осторожностью, мало ли тёзок на свете, а мы всего лишь хотели
запретить повторную регистрацию. :-)

Ответить   Sat, 12 Sep 2009 12:37:32 +0400 (#904713)

 

Vande omentaina, Vladimir!

Ахха, понятно. Тогда такой вопрос: как добавить в таблицу (уже
имеющуюся) такой вот составной ключ? Что-то типа ALTER TABLE `Test`
ADD UNIQUE KEY `Name` (`LastName`, `FirstName`)? Где-то так?)
Спасибо!

Ответить   Anarendil Sat, 12 Sep 2009 16:28:15 +0300 (#904814)

 

Здравствуйте, Anarendil.

Думаю да. В май-эс-ку-эль я не знаток. Но SQL он и в Африке SQL.
Возможны нюансы, но такие базовые вещи должны работать.

Ответить   Sun, 13 Sep 2009 16:47:31 +0400 (#905025)