如何使用Oracle环境中的触发器和/或过程在运行时创建外键

Aar*_*edi 2 oracle plsql

我有两个名为Patient and pharmacy的表.每个患者与一个药房唯一关联.我想在这些表之间的运行时创建外键约束.

Create table patient
(patient_Id varchar2(5) primary key,
patient_name varchar2(20));

Create table pharmacy
(pharmacy_Id varchar2(5) primary key,
pharmacy_name varchar2(20);

Create table patient_pharmacy_mapper
(patient_Id varchar2(5) references patient(patient_Id),
 pharmacy_Id varchar2(5) references pharmacy(pharmacy_Id));
Run Code Online (Sandbox Code Playgroud)

我不是在设计时编写"引用",而是可以在运行时创建/删除这些外键约束(当任何DML语句触发时)?

我对创建一个触发器知之甚少,我们必须使用"Alter table语句"调用一个过程.

a_h*_*ame 5

DDL语句自动提交事务.由于您不允许在触发器中提交(或回滚),因此无法在触发器中运行DDL语句(既不使用静态SQL也不使用动态SQL)


整个想法没有意义.唯一理智的方法是在创建表时创建 FK约束.你没有任何安全措施来推迟这一点,绝对没有.