CREATE TABLE mylog VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));
创建触发器
CREATE OR REPLACE TRIGGER sinfo
AFTER UPDATE OR INSERT OR DELETE ON DEPT
BEGIN
IF INSERTING THEN
INSERT INTO mylog VALUES(user,sysdate,'I');
ELSIF DELETING THEN
INSERT INTO mylog VALUES(user,sysdate,'D');
ELSE
INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
/
运行时出现
WARNING:TRIGGER CREATED WITH COMPILATION ERRORS
有哪位大虾能帮我解决下,谢谢。
5 个解决方案
#1
CREATE TABLE mylog
VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个
AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row
BEGIN
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个
AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row
BEGIN
#2
1、create table中不应该有VALUES关键字,VALUES应该用在insert语句中。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。
#3
#4
INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
红色部分缺分号。
END IF
END;
红色部分缺分号。
#5
谢谢大家了,原来真的是少了个分号的问题啊。。
#1
CREATE TABLE mylog
VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个
AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row
BEGIN
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个
AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row
BEGIN
#2
1、create table中不应该有VALUES关键字,VALUES应该用在insert语句中。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。
#3
#4
INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
红色部分缺分号。
END IF
END;
红色部分缺分号。
#5
谢谢大家了,原来真的是少了个分号的问题啊。。