Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何更改表以添加自连接关系?_Mysql_Mysql Workbench - Fatal编程技术网

Mysql 如何更改表以添加自连接关系?

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

我有一个名为“Users”的表,其中包含一些字段,如Id、ParentId、Name。
我想要的是修改这个表来添加新的自连接关系,以便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)