Ваша версия почти в порядке.Проблема заключается в location
в ссылке на внешний ключ.
У вас нет проблем с каскадированием или упорядочением столбцов.Итак, это работает:
CREATE TABLE location (
uid int not null auto_increment primary key,
name varchar(255) NOT NULL,
`state_uid` int not null,
FOREIGN KEY (state_uid) REFERENCES state(uid) ON UPDATE CASCADE ON DELETE RESTRICT,
`city_uid` int not null,
FOREIGN KEY (city_uid) REFERENCES city(uid) ON UPDATE CASCADE ON DELETE RESTRICT,
`area_uid` int not null,
FOREIGN KEY (area_uid) REFERENCES area(uid) ON UPDATE CASCADE ON DELETE RESTRICT
);
Здесь - это скрипта SQL.
Обратите внимание, что часто принято ставить явные foreign key
(и другие ограничения) послеВ определениях столбцов для этого нет правила или стандарта.Фактически, большинство баз данных поддерживают встроенные определения внешнего ключа.Однако MySQL этого не делает.