sql触发器没有使用insert触发

时间:2015-03-10 05:28:13

标签: sql oracle triggers

DROP TABLE ENROLLMENT CASCADE CONSTRAINTS;
DROP TABLE SECTION CASCADE CONSTRAINTS;

CREATE TABLE SECTION
(
 SectionID  CHAR(5),
 Course     VARCHAR2(7),
 Students   NUMBER(2,0) DEFAULT 0,

 CONSTRAINT PK_SECTION 
        PRIMARY KEY (SectionID)
);

CREATE TABLE ENROLLMENT
(
 SectionID  CHAR(5),
 StudentID  CHAR(7),

 CONSTRAINT PK_ENROLLMENT 
        PRIMARY KEY (SectionID, StudentID),

 CONSTRAINT FK_ENROLLMENT_SECTION 
        FOREIGN KEY (SectionID)
        REFERENCES SECTION (SectionID)
);

INSERT INTO SECTION (SectionID, Course) VALUES ( '12345', 'CSC 355' );
INSERT INTO SECTION (SectionID, Course) VALUES ( '22109', 'CSC 309' );
INSERT INTO SECTION (SectionID, Course) VALUES ( '99113', 'CSC 300' );
INSERT INTO SECTION (SectionID, Course) VALUES ( '99114', 'CSC 300' );
SELECT * FROM SECTION;
COMMIT;


CREATE TRIGGER AddStudent AFTER INSERT ON ENROLLMENT

BEGIN 

    DBMS_OUTPUT.PUT_LINE('DONE');
END;

我试图看到的是触发器是否被触发以及当我运行INSERT INTO注册VALUES('12345','1234567')这样的脚本时;

我没有输出,只是“插入1行”,但是我没有“完成”使得触发器未触发的事情。

1 个答案:

答案 0 :(得分:0)

插入触发器唯一可观察到的效果是:

DBMS_OUTPUT.PUT_LINE('DONE');

这只是将消息放入调试缓冲区。要查看结果,您需要启用DBMS输出。

您可以在SQL Developer中通过“视图”菜单执行此操作,选择“Dbms输出”,然后单击绿色" +"按钮。然后运行你的代码,你应该看到输出,如果有的话。

如果您使用SQL * Plus,则可以运行SET SERVEROUT ON