mysql - MySQL 删除外键约束并删除 NOT NULL
问题描述
如何为 user_id 更改此表以删除外键并将 NOT NULL 更改为 NULL
它指的是用户表。
创建表也显示在底部 - (在评论中提到)。我正在尝试匹配外键。
最重要的第一步是将 NOT NULL 删除为 NULL,但不确定如何去做。
mysql> describe post;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(100) | NO | | NULL | |
| date_posted | datetime | NO | | NULL | |
| description | longtext | YES | | NULL | |
| status | varchar(100) | YES | | NULL | |
| assigned_to | varchar(100) | YES | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| reported_by | varchar(100) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
mysql> describe user;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | UNI | NULL | |
| email | varchar(120) | NO | UNI | NULL | |
| image_file | varchar(20) | NO | | NULL | |
| password | varchar(60) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
| post | CREATE TABLE `post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`date_posted` datetime NOT NULL,
`description` longtext,
`status` varchar(100) DEFAULT NULL,
`assigned_to` varchar(100) DEFAULT NULL,
`user_id` int(11) NOT NULL,
`reported_by` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `post_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |
| user | CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`email` varchar(120) NOT NULL,
`image_file` varchar(20) NOT NULL,
`password` varchar(60) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
解决方案
要删除NOT NULL
约束,您可以执行以下操作:
alter table post modify user_id int null;
然后要删除外键约束,您可以执行以下操作:
alter table post drop foreign key `post_ibfk_1`;
推荐阅读
- timeout - 设置 execution_timeout 后的 AirflowTaskTimeout
- python - 为什么我不能输入 tkinter Text 小部件?
- bash - 在 Bash 中,如何将标准输出设置为 tee 内的变量
- c# - 实体框架和表关系错误输出
- php - leftJoin 在 laravel eloquent 中不能正常工作?
- react-native - 反应原生文本对齐并居中
- unity3d - 无法使用 UnityWebRequest 下载大小超过 63kb 的文件
- python - 为什么负索引为零不起作用?
- php - 如何通过数组值点击链接
- sql-server - SQL Server中根据不同类型选择上一行