Зависимое ограничение в MySQL

У меня не так много опыта работы с MySQL или SQL в целом, и я не хочу слишком углубляться в это. Но я просто хочу спросить:

У меня есть два столбца, например:

CREATE TABLE foo(parent INT(11) unsigned NOT NULL, ordering INT);

Мне просто нужно ограничение, которое гарантирует, что если ключ parent один и тот же, то ordering должен быть другим. Или по математике:

For all f1,f2 in foo: parent(f1) = parent(f2) => ordering(f1) =/= ordering(f2)

Как я могу выразить это в MySQL?


person Lanbo    schedule 21.06.2011    source источник
comment
Если вы не хотите погружаться в это слишком глубоко, можно предположить, что вам не нужно понимать приведенный здесь ответ. Тогда зачем нам давать ответ?   -  person AJ.    schedule 21.06.2011
comment
Хм, согласен. Просто я не люблю напрямую касаться SQL, поэтому я сказал, что не хочу вдаваться в него слишком глубоко.   -  person Lanbo    schedule 21.06.2011


Ответы (1)


Я предполагаю, что =/= означает "не равно" (что будет != или <> в терминологии SQL).

Уникальный индекс (родительский, упорядоченный) должен делать это:

CREATE UNIQUE INDEX idx_order_unique ON foo (parent, ordering);
person a_horse_with_no_name    schedule 21.06.2011