У меня есть две таблицы:MySQL внешнего ключа не работает
CREATE TABLE IF NOT EXISTS treaties(
id INT NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB;
и
CREATE TABLE IF NOT EXISTS items(
id INT NOT NULL AUTO_INCREMENT,
treaty INT NOT NULL,
item varchar(20),
PRIMARY KEY(id),
FOREIGN KEY (treaty) REFERENCES treaties(id)
ON UPDATE RESTRICT
ON DELETE RESTRICT
)ENGINE=InnoDB;
После этого я вставленные несколько строк в каждой из таблиц, но ЗНАЧЕНИЯ treaties.id
и items.treaty
были такими же. Когда я бегу
EXPLAIN SELECT *
FROM `items`
JOIN `treaties` ON `items`.`treaty` = `treaties`.`id`
WHERE 1
я получил:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | treaties| ALL | PRIMARY | NULL| NULL | NULL| 3 |
1 | SIMPLE | items | ALL | treaty | NULL| NULL | NULL| 4 | Using where; Using join buffer
Я подумал, что если у меня есть внешний ключ между items.treaty
и treaties.id
этот ключ должен использоваться и тип не должен быть ALL. Что не так?
Пожалуйста, помогите!
Спасибо!
Благодарим вас за ответ! Действительно, объясните, что запрос изменился после добавления более 10 строк. Спасибо!!!! – lubart