插入后访问触发器中行的对象引用

时间:2015-11-06 18:01:44

标签: sql oracle plsql triggers

我遇到了SQL对象(ORACLE)的问题。 :(

我有一个抽象类型论坛,在ForumCategory中推广,类型为Category:

CREATE OR REPLACE TYPE Forum_t AS OBJECT
(
    moderators Users_table_ref,
    topics Topics_table,
    MEMBER FUNCTION getName RETURN VARCHAR2
)
NOT FINAL NOT INSTANTIABLE;
/

CREATE TABLE Forum OF Forum_t
NESTED TABLE moderators STORE AS Liste_moderators,
NESTED TABLE topics STORE AS Liste_topics
    (NESTED TABLE posts STORE AS Liste_posts);


CREATE OR REPLACE TYPE ForumCategory_t UNDER Forum_t
(
    category REF Category_t,
    OVERRIDING MEMBER FUNCTION getName RETURN VARCHAR2
);
/

CREATE OR REPLACE TYPE BODY ForumCategory_t AS
    OVERRIDING MEMBER FUNCTION getName RETURN VARCHAR2 IS
        c Category_t;
    BEGIN
        SELECT DEREF(SELF.category) INTO c FROM DUAL;
        RETURN c.name;
    END getName; 
END;
/

CREATE OR REPLACE TYPE Category_t AS OBJECT
(
    name VARCHAR2(60)
);
/

CREATE TABLE Category OF Category_t
(
    CONSTRAINT PK_CAT_NAME PRIMARY KEY(name)
);

我希望在表格类别上插入一个触发器后,在桌面论坛上插入一个ForumCategory_t。

我有这段代码:

CREATE OR REPLACE TRIGGER Category_insert
    AFTER INSERT ON Category
    FOR EACH ROW
DECLARE
    ref_cat REF Category_t;
BEGIN
    SELECT REF(c) INTO ref_cat 
    FROM Category c 
    WHERE c.name = :NEW.name; 

    INSERT INTO Forum VALUES(ForumCategory_t(Users_table_ref(),Topics_table(),ref_cat));
END;
/

开头不起作用,我无法选择插入类别的REF(它在触发器外工作)。

拜托,我需要帮助^^

PS:抱歉我的英文

0 个答案:

没有答案
相关问题