题
我有一个名为“用户”的表,它包含一些字段,例如ID,parentID,名称。
我想要的是更改此表以添加新的自加入关系,以便将parentid链接到ID,但是parentID是无效的。我想在MySQL中编写此Alter SQL Statment,而不会放下表。
解决方案
您是说要添加外键约束吗?如果是这样,请参阅 外国钥匙限制 文档。这是一个示例,从创建一个简单的表格开始:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
添加索引 parent_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;
其他提示
alter table Users add constraint parent foreign key (ParentId) references
Users (Id);
请注意,如果您正在使用包含数据的表,则如果存在孤儿关系,外国密钥关系的创建将失败。在创建外国钥匙之前找到并修复孤儿!
选择 * users
在哪里 parent_id
不在(从中选择ID users
);
不隶属于 StackOverflow