我通过以下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工作台,它没有显示任何创建外键的迹象。有谁知道为什么会这样?或者我做错了什么?这是两个表中的一对一关系。
答案 0 :(得分:2)
该表可能采用MyISAM格式,不支持外键。
首先尝试将其转换为InnoDB:
alter table users engine=InnoDB;
答案 1 :(得分:1)
您还必须确保users.id
和user_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;