--建表
create table users(
id NUMBER(5) PRIMARY KEY,
username varchar2(20) not null,
password varchar2(20),
email varchar2(20)
);
--建序列
CREATE SEQUENCE users_seq
MINVALUE 1
MAXVALUE 9999999999
START WITH 1
INCREMENT BY 1
CACHE 30
ORDER;
--建触発器
CREATE OR REPLACE TRIGGER users_tg
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SELECT users_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
--執行
insert into users (id,username,password,email) values(users_seq.NEXTVAL,'www','123','[email protected]'); select * from users;
到执行插入语句时提示:ORA-04098触发器"TEST1.USERS_TG"无效且未通过重新验证
请问要怎么改?
create table users(
id NUMBER(5) PRIMARY KEY,
username varchar2(20) not null,
password varchar2(20),
email varchar2(20)
);
--建序列
CREATE SEQUENCE users_seq
MINVALUE 1
MAXVALUE 9999999999
START WITH 1
INCREMENT BY 1
CACHE 30
ORDER;
--建触発器
CREATE OR REPLACE TRIGGER users_tg
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SELECT users_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
--執行
insert into users (id,username,password,email) values(users_seq.NEXTVAL,'www','123','[email protected]'); select * from users;
到执行插入语句时提示:ORA-04098触发器"TEST1.USERS_TG"无效且未通过重新验证
请问要怎么改?
create table users(
id NUMBER(5) PRIMARY KEY,
username varchar2(20) not null,
password varchar2(20),
email varchar2(20)
);
--建序列
CREATE SEQUENCE users_seq
MINVALUE 1
MAXVALUE 9999999999
START WITH 1
INCREMENT BY 1
CACHE 30
ORDER;
--建触発器
CREATE OR REPLACE TRIGGER users_tg
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SELECT users_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
--執行
insert into users (id,username,password,email) values(users_seq.NEXTVAL,'www','123','[email protected]'); --执行结果
id 为2我这里没有问题,检查一下你得触发器有没有启用
insert into users (username,password,email) values('www','123','[email protected]');
我的这个触发器怎么启用?
DISABLED--表示未启用
去掉之后, 没问题了: SQL> CREATE OR REPLACE TRIGGER users_tg
2 BEFORE INSERT ON users
3 FOR EACH ROW
4 BEGIN
5 SELECT users_seq.NEXTVAL INTO :NEW.id FROM DUAL;
6 END;
7 / 触发器已创建 SQL> drop trigger users_tg; 触发器已丢弃 SQL> insert into users (id,username,password,email) values(users_seq.NEXTVAL,'ww
w','123','[email protected]'); 已创建 1 行。 SQL> select * from users; ID USERNAME PASSWORD EMAIL
---------- -------------------- -------------------- --------------------
2 www 123 [email protected]
4 www 123 [email protected]
5 www 123 [email protected] SQL>
不过,这个trigger好像没什么作用。你的触发器是干什么的呀???