Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 关于删除级联不工作_Mysql_Foreign Keys - Fatal编程技术网

Mysql 关于删除级联不工作

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

这是两个表的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_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也是如此)。