无法在删除时添加“set default”的外键

时间:2016-03-22 11:44:33

标签: mysql database foreign-keys constraints mariadb

我正在使用MariaDB,现在想要将一个外键添加到我的数据库表中。我在尝试使用set default作为删除约束时遇到问题; =。 (user_id表中pages的默认值为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表project的外键约束出错。pages:   使用外键约束更改表projectpages失败。在删除集默认'删除集'默认'附近'的'外键(user_id)引用usersid)中解析错误。

当我在没有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不起作用,但错误信息没有给我足够的信息

1 个答案:

答案 0 :(得分:2)

好的,明白了。似乎InnoDB不允许A

  

SET DEFAULT:MySQL解析器识别此操作,但InnoDB和NDB都拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。

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