Mysql 如何更改表以添加自连接关系?
我有一个名为“Users”的表,其中包含一些字段,如Id、ParentId、Name。Mysql 如何更改表以添加自连接关系?,mysql,mysql-workbench,Mysql,Mysql Workbench,我有一个名为“Users”的表,其中包含一些字段,如Id、ParentId、Name。 我想要的是修改这个表来添加新的自连接关系,以便ParentId链接到Id,但ParentId可以为null。 我想在mysql中编写这个alter sql语句,而不删除表。您的意思是要添加外键约束吗?如果是,请参阅文档。下面是一个示例,从创建一个简单的表开始: alter table Users add constraint parent foreign key (ParentId) references
我想要的是修改这个表来添加新的自连接关系,以便ParentId链接到Id,但ParentId可以为null。
我想在mysql中编写这个alter sql语句,而不删除表。您的意思是要添加外键约束吗?如果是,请参阅文档。下面是一个示例,从创建一个简单的表开始:
alter table Users add constraint parent foreign key (ParentId) references
Users (Id);
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
为parent\u id
列添加索引:
ALTER TABLE users
ADD INDEX `parent_id` (`parent_id`);
添加外键约束:
ALTER TABLE users
ADD CONSTRAINT `fk_parent_id`
FOREIGN KEY `parent_id` (`parent_id`)
REFERENCES `users` (`id`);
显示新的表结构:
SHOW CREATE TABLE users;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `fk_parent_id`
FOREIGN KEY (`parent_id`)
REFERENCES `users` (`id`)
) ENGINE=InnoDB;
您的意思是要添加外键约束吗?如果是,请参阅文档。下面是一个示例,从创建一个简单的表开始:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
为parent\u id
列添加索引:
ALTER TABLE users
ADD INDEX `parent_id` (`parent_id`);
添加外键约束:
ALTER TABLE users
ADD CONSTRAINT `fk_parent_id`
FOREIGN KEY `parent_id` (`parent_id`)
REFERENCES `users` (`id`);
显示新的表结构:
SHOW CREATE TABLE users;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `fk_parent_id`
FOREIGN KEY (`parent_id`)
REFERENCES `users` (`id`)
) ENGINE=InnoDB;
请注意,如果使用的是包含数据的表,则如果存在孤立关系,则外键关系创建将失败。在创建外键之前查找并修复孤立项
从
用户
中选择*其中父id
不在(从用户
中选择id) 请注意,如果使用的是包含数据的表,则如果存在孤立关系,则外键关系创建将失败。在创建外键之前查找并修复孤立项
从用户
中选择*其中父id
不在(从用户
中选择id)