如何从sql中的列中删除没有任何id的唯一约束

问题描述 投票:0回答:1
create table frontend_employee(
employee_id int primary key,
employee_name varchar(50),
employee_role varchar(50),
employee_sarlary int default 25000,
employee_boss_id int unique,
foreign key(employee_boss_id) references frontend_boss(boss_id)
);

如您所见,我没有为该 UNIQUE 约束提供任何 ID 为了给该约束提供 ID,我应该使用另一种方法,即

create table frontend_employee(
employee_id int primary key,
employee_name varchar(50),
employee_role varchar(50),
employee_sarlary int default 25000,
employee_boss_id int,
CONSTRAINT UC_employee UNIQUE (employee_boss_id),
foreign key(employee_boss_id) references frontend_boss(boss_id)
);

我已经尝试了 Google 上提供的所有方法 但它们都需要约束的名称,但我没有为 UNIQUE 约束指定任何名称 我找不到任何方法来从该列中删除该唯一约束

网上查询:-

ALTER TABLE table_name DROP CONSTRAINT unique_constraint;
mysql unique-constraint
1个回答
0
投票

在您的情况下,您不能仅删除唯一约束,因为外键约束中需要它。您还必须删除外键约束。 考虑以下数据示例

create table frontend_boss( boss_id int unique ); create table frontend_employee( employee_id int primary key, employee_name varchar(50), employee_role varchar(50), employee_sarlary int default 25000, employee_boss_id int unique, foreign key(employee_boss_id) references frontend_boss(boss_id) ); show create table frontend_employee; CREATE TABLE `frontend_employee` ( `employee_id` int(11) NOT NULL, `employee_name` varchar(50) DEFAULT NULL, `employee_role` varchar(50) DEFAULT NULL, `employee_sarlary` int(11) DEFAULT 25000, `employee_boss_id` int(11) DEFAULT NULL, PRIMARY KEY (`employee_id`), UNIQUE KEY `employee_boss_id` (`employee_boss_id`), CONSTRAINT `frontend_employee_ibfk_1` FOREIGN KEY (`employee_boss_id`) REFERENCES `frontend_boss` (`boss_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ;

唯一约束具有自动生成的名称 
employee_boss_id

掉落

alter table frontend_employee drop constraint employee_boss_id;

错误1553(HY000):无法删除索引“employee_boss_id”:需要在
外键约束

删除唯一约束和外键

alter table frontend_employee drop constraint employee_boss_id, drop constraint frontend_employee_ibfk_1; Query OK, 0 rows affected (0.045 sec) Records: 0 Duplicates: 0 Warnings: 0 show create table frontend_employee; CREATE TABLE `frontend_employee` ( `employee_id` int(11) NOT NULL, `employee_name` varchar(50) DEFAULT NULL, `employee_role` varchar(50) DEFAULT NULL, `employee_sarlary` int(11) DEFAULT 25000, `employee_boss_id` int(11) DEFAULT NULL, PRIMARY KEY (`employee_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.