我有两个带外键的表,我想在第一个表中按下外键,第二个表出现数据
Posted
技术标签:
【中文标题】我有两个带外键的表,我想在第一个表中按下外键,第二个表出现数据【英文标题】:i have two table with foreign key and i want to press in foreign key in first table and the second table appear data 【发布时间】:2020-01-08 08:58:22 【问题描述】:我有两个街区。第一个是向导,第二个是 Oracle Forms 11g 中的手动与关系。
我将数据执行到第一个块中,我想在第一个表中按下外键,第二个表出现由相同数字外键链接在一起的数据?
请问我应该使用哪个触发器?我应该将哪些代码放入触发器?
【问题讨论】:
【参考方案1】:您可以在Block1
的块级别使用WHEN-NEW-RECORD-INSTANCE
触发器和代码:
declare
v_skulist table1.skulist%type;
begin
v_skulist := :Block1.f_skulist; --> represents left uppermost field
go_block('Block2');
execute_query;
go_block('Block1'); --> go back to the upper block again, if don't want to come back, then starting from this line upto `end;`(exclusive) should be removed.
while v_skulist != :Block1.f_skulist
loop
next_record;
end loop;
end;
在哪里
Query Data Source Name
属性设置为 table1
为 Block1
和
Query Data Source Name
属性设置为 myuser1.table2
WHERE Clause
设置为
skulist = :Block1.skulist
为Block2
假设第二个表至少在另一个用户上
如您的评论中所述,已授予您当前用户的 select
权限。
这样,无论在第一个块中触及什么记录,对应的外键列都会被带到第二个块中。
【讨论】:
【参考方案2】:您应该使用了数据块向导,它创建了所有必要的触发器和过程来处理它。
如果您要手动操作,那么……您可能不应该这样做,因为涉及的程序太多。
我建议您删除详细信息块并从头开始创建它,这次使用向导。注意它的要求 - 一旦你完成 - 表单会自动执行你想要的。
然后,您可以查看 Forms 为您创建的对象 - 如果您真的想手动完成,请尝试模仿其步骤。
【讨论】:
好的,如果数据库中的第二个块但它在另一个用户中,它将如何出现在我的用户中以将它与第一个块连接??? 如果您说第二个(详细)块的基础表属于另一个用户,那么您必须(至少)从该用户获取 SELECT 权限(参见 GRANT 语句)。然后,在您自己的架构中为其创建一个同义词,以便您可以在数据块向导中使用它。以上是关于我有两个带外键的表,我想在第一个表中按下外键,第二个表出现数据的主要内容,如果未能解决你的问题,请参考以下文章