Tak, klucz obcy jest rodzajem ograniczenia. MySQL ma nierówną obsługę ograniczeń:
PRIMARY KEY
:tak jako ograniczenie tabeli i ograniczenie kolumny.FOREIGN KEY
:tak jako ograniczenie tabeli, ale tylko z silnikami pamięci masowej InnoDB i BDB; w przeciwnym razie analizowane, ale ignorowane.CHECK
:analizowane, ale ignorowane we wszystkich silnikach pamięci masowej.UNIQUE
:tak jako ograniczenie tabeli i ograniczenie kolumny.NOT NULL
:tak jako ograniczenie kolumny.DEFERRABLE
i inne atrybuty ograniczeń:brak wsparcia.
CONSTRAINT
Klauzula umożliwia jawne nazwanie ograniczenia, aby metadane były bardziej czytelne lub aby użyć nazwy, gdy chcesz usunąć ograniczenie. Standard SQL wymaga, aby CONSTRAINT
klauzula jest opcjonalna. Jeśli to pominiesz, RDBMS automatycznie utworzy nazwę, która zależy od implementacji.