怎么样删除外键(该外键无名字)

怎么样删除外键order_id
alter table orderitem foreign key (order_id);
使用该语句显示无效 alter table 选项

alter table orderitem drop foreign key

该回答引用ChatGPT4与博主@晓码自在合作编写:

删除外键的SQL语句正确格式如下:

sql
ALTER TABLE orderitem 
DROP CONSTRAINT fk_orderitem_order_id;

其中:

  • ALTER TABLE orderitem: 表示要修改orderitem表
  • DROP CONSTRAINT fk_orderitem_order_id: 表示删除名称为fk_orderitem_order_id的外键约束

所以整个语句为:

sql
ALTER TABLE orderitem 
DROP CONSTRAINT fk_orderitem_order_id;

执行此语句后,orderitem表的order_id外键约束将被删除。

您的语句:

sql
alter table orderitem foreign key (order_id); 

是错误的,正确的语法应为:

sql
ALTER TABLE table_name 
DROP {CONSTRAINT | FOREIGN KEY} constraint_name

需要指定DROP子句,以及CONSTRAINT关键字或者FOREIGN KEY关键字和约束名称。

而您的语句缺少DROP子句和约束名称,所以解析器无法识别,会报语法错误。

所以,正确删除orderitem表的order_id外键,请执行语句:

sql 
ALTER TABLE orderitem  
DROP CONSTRAINT fk_orderitem_order_id;

之后,orderitem表的order_id字段就不再强制引用orders表的order_id主键,实现外键约束的删除。

请执行正确的SQL语句,并验证orderitem表的order_id字段是否还具有外键特性以确认是否成功。

查询系统的主外键,再看名字是啥

select a.constraint_name, a.table_name, b.constraint_name 
from user_constraints a, user_constraints b
where a.constraint_type = 'R' 
and b.constraint_type = 'P' 
and a.r_constraint_name = b.constraint_name
;

  select *
from user_constraints where constraint_type='R';