在mySql中创建外键时出现问题

时间:2011-01-22 17:26:51

标签: sql mysql foreign-keys myisam cascading-deletes

我通过以下statemnt在我的sql中创建了一个外键..

ALTER TABLE `users` ADD FOREIGN KEY ( `id`) 
REFERENCES `user_login` (`user_id`) 
ON DELETE CASCADE ;

在我执行删除语句

之后,创建似乎成功
DELETE From user_login WHERE user_id = 1576;

但在用户中仍然存在引用该行的行。我打开mysql工作台,它没有显示任何创建外键的迹象。有谁知道为什么会这样?或者我做错了什么?这是两个表中的一对一关系。

3 个答案:

答案 0 :(得分:2)

该表可能采用MyISAM格式,不支持外键。

首先尝试将其转换为InnoDB:

alter table users engine=InnoDB;

答案 1 :(得分:1)

您还必须确保users.iduser_login.user_id各有一个索引。

答案 2 :(得分:0)

将此代码复制并粘贴到 Mysql脚本编辑器中并运行。您将有两个表类别产品这些表 cat_id 外键

CREATE DATABASE IF NOT EXISTS dbdemo;

USE dbdemo;

CREATE TABLE categories(
   cat_id int not null auto_increment primary key,
   cat_name varchar(255) not null,
   cat_description text
) ENGINE=InnoDB;

CREATE TABLE products(
   prd_id int not null auto_increment primary key,
   prd_name varchar(355) not null,
   prd_price decimal,
   cat_id int not null,
   FOREIGN KEY fk_cat(cat_id)
   REFERENCES categories(cat_id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT
)ENGINE=InnoDB;