1

我通过以下语句在我的 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 工作台,它没有显示任何外键已创建的迹象。有谁知道为什么会这样?或者我做错了什么?它在两个表中是一对一的关系。

4

3 回答 3

2

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

尝试先将其转换为 InnoDB:

alter table users engine=InnoDB;
于 2011-01-22T17:37:29.123 回答
1

您还必须确保两者users.id都有user_login.user_id一个索引。

于 2011-01-22T17:30:22.530 回答
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;
于 2017-09-15T14:03:11.760 回答