将现有列修改为外键

Modifying an existing column to a foreign key

我有一个没有外键的 oracle 数据库,所有 table 关系都由软件处理。例如,table CustomerCustomer.customercodeCustomer.Name 其中 customercode 是主键,table OrderOrder.ordercode (PK), Order.customercode 其中 customercode 没有外键约束。到目前为止,应用程序处理所有事务并处理所有 table 关系,以便数据保持一致。我需要将其更改为适当的关系数据库实现,因此我需要将 Order.customercode 修改为 table Customer 的 FK。在不丢失数据的情况下执行此操作的任何 sqlplus 语句?

在Oracle中,创建外键永远不会丢失任何数据,但如果数据不符合新的约束条件,则会失败。假设你的数据没问题,你可以使用 alter table 语句:

ALTER TABLE order
ADD CONSTRAINT order_customer_fk FOREIGN KEY (customercode)
REFERENCES customer(customercode)