【发布时间】:2017-09-04 18:33:30
【问题描述】:
我在使用触发器时遇到问题,我尝试在数据库中插入一些数据
这是我要插入的数据
INSERT INTO login (login, senha) VALUES ('admin', 'admin')
错误
ORA-04098: trigger 'HOTEL.bi_login' is invalid and failed re-validation
表格和序列
CREATE TABLE login(idLogin NUMBER(5), login VARCHAR2(50) UNIQUE, SENHA VARCHAR2(50), CONSTRAINT idLogin_pk PRIMARY KEY (idLogin));
CREATE sequence "login_seq";
还有触发器
CREATE trigger "bi_login"
before insert on login
for each row
DECLARE
qntdRows DATATYPE
BEGIN
select "login_seq".nextval
INTO qntdRows
FROM dual;
:NEW.idLogin = qntdRows
END;
【问题讨论】:
-
:NEW.idLogin = qntdRows后缺少分号。运行 create trigger 语句后,只需运行show errors即可检查触发器是否编译正常。提示:使用CREATE OR REPLACE TRIGGER ...命令代替CREATE TRIGGER ...。另一个:qntdRows DATATYPE后面缺少分号。 -
除此之外,为了更好地使用
qntdRows := login_seq.nextval;而不是与“双”一起使用 -
另外,
DATATYPE到底是什么数据类型?