2013-06-04 3 views
0

Здравствуйте, возможно ли иметь комбинацию из двух полей наоборот?2 уникальная комбинация полей наоборот

Пример:

ID catID 
1 58 

Так что мы не смогли сохранить другую строку в качестве 58-1. В настоящее время у меня есть первичный ключ в обоих полях, но он позволяет мне хранить комбинацию 58-1.

благодарит

+1

Какова цель этого? Создайте триггер. – Kermit

+0

для хранения связанных ссылок без дубликатов. Мой оператор select проверяет оба идентификатора полей и catID, поэтому мы не храним 2 записи для 2 категорий, кроме одного. Наверное, тогда это невозможно. –

+0

никаких проблем, я думал, что это можно сделать через структуру. Его просто предосторожность, мне придется сначала проверить, а не хранить дубликаты. –

ответ

0

Вы бы объединить эти два поля, используя concat():

select concat(id, '-', catId) as CombinedId 
from t; 

Вы можете инкапсулировать это в представлении, если вам нравится.

Вы можете использовать CombinedId, чтобы присоединиться к другой таблице, если хотите.

Однако это не рекомендуется. Если вы хотите сравнить, используйте два значения независимо.

0

Предполагая ID и catID симметричны , вы могли бы просто:

CHECK (ID < catID) 

Или, возможно (в зависимости от ваших требований):

CHECK (ID <= catID) 

Т.е. (ID = X, catID = Y) эквивалентен (ID = Y, catID = X) за каждые X и Y.

Смежные вопросы