【发布时间】:2020-08-20 19:03:40
【问题描述】:
我不知道如何在 Oracle APEX 中写出一个外键约束来表示 Oracle Database Modeler 中的弧线关系。
【问题讨论】:
标签: oracle oracle-sqldeveloper oracle-apex
我不知道如何在 Oracle APEX 中写出一个外键约束来表示 Oracle Database Modeler 中的弧线关系。
【问题讨论】:
标签: oracle oracle-sqldeveloper oracle-apex
您可以让数据建模器生成关系模型和 DDL 代码。然后,在 APEX 中打开 SQL 脚本编辑器,粘贴 DDL 代码,为脚本命名并执行它 - 请参见下面的屏幕截图。
(示例)ERD
关系模型(生成)
DDL 代码(生成)
APEX 脚本编辑器(注意强制执行“弧”的 CHECK 约束)
脚本执行
您可能需要稍微调整一下脚本(如果有错误消息)。
然后,你应该做一些测试,让你看到“弧”实际上是有效的,例如
测试
-- these 3 INSERTs must fail
-- {1} event without a "venue id"
insert into event (
id, eventdate, private_home_id, public_space_id
) values (
1, sysdate, null, null
) ;
-- ORA-02290: check constraint (...ARC_1) violated
-- {2} private home does not exist
insert into event (
id, eventdate, private_home_id, public_space_id
) values (
1, sysdate, 1000, null
) ;
-- ORA-02291: integrity constraint (...EVENT_PRIVATE_HOME_FK) violated - parent
key not found
-- {3} public space does not exist
insert into event (
id, eventdate, private_home_id, public_space_id
) values (
1, sysdate, null, 2000
) ;
-- ORA-02291: integrity constraint (...EVENT_PUBLIC_SPACE_FK) violated - parent
key not found
在 PRIVATE_HOME 和 PUBLIC_SPACE 表中插入一些数据
-- add a PRIVATE_HOME and a PUBLIC_SPACE
insert into private_home( id, vname ) values ( 1000, 'The Manor' ) ;
insert into public_space( id, vname ) values ( 2000, 'Royal Albert Hall' ) ;
-- add 2 events
insert into event (
id, eventdate, private_home_id, public_space_id
) values (
1, sysdate, 1000, null
) ;
insert into event (
id, eventdate, private_home_id, public_space_id
) values (
2, sysdate, null, 2000
) ;
select * from event ;
SQL> select * from event ;
ID EVENTDATE PRIVATE_HOME_ID PUBLIC_SPACE_ID
---------- --------- --------------- ---------------
1 06-MAY-20 1000
2 06-MAY-20 2000
【讨论】: