mysql - 外键已接受但不起作用

标签 mysql foreign-keys

我正在为我的网站创建一个“民意调查”插件,为此我有 2 个表格(如下所示)。

我想要实现的是,通过从 dd_polls 表中删除“poll”,dd_poll_options 表上的任何链接外键也会被删除。

两个表都创建得很好,但我上面提到的期望没有发生。

我是否以正确的方式使用外键?如果是,如何修复我的代码?谢谢。

CREATE TABLE dd_polls (
    ID smallint(3) NOT NULL AUTO_INCREMENT,
    poll_created_by smallint(3) DEFAULT "0",
    poll_created_date datetime DEFAULT "0000-00-00 00:00:00" NOT NULL,
    poll_last_edited_by smallint(3) DEFAULT "0",
    poll_last_edited_date datetime DEFAULT "0000-00-00 00:00:00" NOT NULL,
    poll_title varchar(128) COLLATE latin1_general_ci,
    poll_start_date date DEFAULT "0000-00-00" NOT NULL,
    poll_expiry_date date DEFAULT "0000-00-00" NOT NULL,
    poll_closed tinyint(1) NOT NULL,
    poll_allow_recasting tinyint(1) NOT NULL,
    poll_show_votes tinyint(1) NOT NULL,
    UNIQUE (ID)
)

CREATE TABLE dd_poll_options (
    ID smallint(3) NOT NULL AUTO_INCREMENT,
    option_text text(255) COLLATE latin1_general_ci,
    option_order smallint(2) DEFAULT "0",
    poll_id smallint(3) NOT NULL,
    FOREIGN KEY (poll_id) REFERENCES dd_polls (ID)
        ON DELETE CASCADE,
    UNIQUE (ID)
)

最佳答案

只是一个疯狂的猜测,但我认为你需要使用 InnoDB 引擎才能使其工作。我打赌您正在使用 MyISAM。

这是具有相同症状的另一个问题:on-delete-cascade-not-working-in-mysql

这不是正确的语法

CONSTRAINT FOREIGN KEY (poll_id) REFERENCES dd_polls(ID) ON DELETE CASCADE,

关于mysql - 外键已接受但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407418/

相关文章:

python - 如何最好地编辑 .txt 文件中的文本以与 mysql 一起使用

php - Blueimp jQuery 文件 uploader 并将文件大小保存到数据库中

php - 获取当前登录用户的用户 ID 并将其作为外键值添加到不同的表中返回 null - MySQL - CodeIgniter

mysql - 外键的字段类型可以与引用的主键不同吗?

mysql - 在Codeigniter中添加mysql表之间的关系

mysql - 如何将子查询与 INSERT 结合到 2 个不同的表 + 引用自动增量值

javascript - 如何正确格式化 PHP foreach 循环?

mysql - 如何在MySQL中创建也是主键的外键?

unit-testing - 在 PHPUnit/DBUnit 中关闭外键约束

java - 特定设备可以访问页面,但其他设备不能