Mysql 关于删除级联不工作
这是两个表的sql语句Mysql 关于删除级联不工作,mysql,foreign-keys,Mysql,Foreign Keys,这是两个表的sql语句 CREATE TABLE Customer( c_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, f_name VARCHAR(50) NOT NULL, l_name VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, number INTEGER, date_joine
CREATE TABLE Customer(
c_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
f_name VARCHAR(50) NOT NULL,
l_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
number INTEGER,
date_joined DATE NOT NULL CHECK (date_added <= now())
);
CREATE TABLE Address(
a_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
c_id INTEGER NOT NULL REFERENCES Customer(c_id) ON DELETE CASCADE,
billing BOOLEAN,
f_line VARCHAR(50) NOT NULL,
s_line VARCHAR(100),
county VARCHAR(20) NOT NULL,
p_code VARCHAR(7) NOT NULL,
number INTEGER(11)
);
创建客户表(
c_id整数非空自动增量主键,
f_name VARCHAR(50)不为空,
l_name VARCHAR(50)不为空,
电子邮件VARCHAR(100)不为空,
整数,
date\u joined date NOT NULL CHECK(date\u added在不知道使用哪个数据库的情况下,无法确定是否正确,但我认为您可能需要将fk声明为如下约束:
CREATE TABLE Address(
a_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
c_id INTEGER NOT NULL,
billing BOOLEAN,
f_line VARCHAR(50) NOT NULL,
s_line VARCHAR(100),
county VARCHAR(20) NOT NULL,
p_code VARCHAR(7) NOT NULL,
number INTEGER(11),
FOREIGN KEY (c_id) REFERENCES Customer(c_id) ON DELETE CASCADE
);
那么会发生什么呢?它失败了吗?它会留下一个孤立的记录吗?什么RDBMS?我猜你使用的是mysql,默认引擎是MyISAM,它不支持外键。另外,请重新编写表的脚本以检查外键约束是否存在,并具有级联delete.mysql(即使使用InnoDB)忽略内联外键定义,因此您的表是在没有外键的情况下创建的。@Charles:这是“MySQL方式”,手册中有相关说明“此外,InnoDB不识别或支持“内联引用规范”[…]InnoDB仅在作为单独外键规范“Good catch.MySQL”的一部分指定时才接受REFERENCES子句。MySQL忽略(没有错误或警告)问题中所示的“inline”外键定义(即使对于InnoDB也是如此)。