删除时无法使用 "set default" 添加外键

Cannot add foreign key with "set default" as on delete

我正在使用 MariaDB,现在想向我的数据库添加一个外键 table。我在尝试使用 set default 作为我的删除约束时遇到问题;=。 (pagestable中的user_id默认为1)

`alter table `pages` add constraint pages_user_id_foreign foreign key (`user_id`) references `users` (`id`) on delete set default`

但是,当我这样做时,出现了错误

SQLSTATE[HY000]: General error: 1005 Can't create table 'project.#sql-add_38' (errno: 150)

当我查看最后一个外键错误时,我得到以下输出

160322 12:40:56 Error in foreign key constraint of table project.pages: Alter table project.pages with foreign key constraint failed. Parse error in ' foreign key (user_id) references users (id) on delete set default' near ' on delete set default'.

当我在没有 on delete set default 的情况下这样做时,它没有任何问题

`alter table `pages` add constraint pages_user_id_foreign foreign key (`user_id`) references `users` (`id`)`

同样如此,如果我使用 set null 作为我的删除条件

alter table `pages` add constraint pages_provider_id_foreign foreign key (`provider_id`) references `providers` (`id`) on delete cascade

不知何故,只有 set default 不起作用,但错误消息没有给我足够的信息

好的,知道了。似乎 InnoDB 不允许 ON DELETE SET DEFAULT

SET DEFAULT: This action is recognized by the MySQL parser, but both InnoDB and NDB reject table definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses.

https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html