//创建序列,用于表中主键的自增
CREATE SEQUENCE SEQ_APPID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999;
//应用表
CREATE TABLE APPLICATIONS
(
APPID NUMBER(10,0) NOT NULL ENABLE,
APPNAME VARCHAR2(50),
APPDESCRIPTION VARCHAR2(200),
APPURL VARCHAR2(50),
CONSTRAINT "APPLICATIONS_PK" PRIMARY KEY ("APPID")
);
//自增触发器
CREATE OR REPLACE TRIGGER APPLICATIONS_TRI BEFORE
INSERT ON APPLICATIONS FOR EACH ROW
BEGIN
SELECT SEQ_APPID.NEXTVAL INTO: NEW.APPID FROM DUAL;
END;在SQLPlus中
能够创建序列和表,但创建触发器时一直等待,登录时用的是自己创建的一个用户
后来用DBA Studio来创建触发器,提示错误,好像是因为该用户没有权限
后来以system用户登录DBA Studio中的数据库创建触发器成功,但该触发器的状态显示invalid,也就是无效。
在SQLPlus中插入数据,就提示
触发器'触发器名称'无效且未通过重新确认
请教了,怎么解决
CREATE SEQUENCE SEQ_APPID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999;
//应用表
CREATE TABLE APPLICATIONS
(
APPID NUMBER(10,0) NOT NULL ENABLE,
APPNAME VARCHAR2(50),
APPDESCRIPTION VARCHAR2(200),
APPURL VARCHAR2(50),
CONSTRAINT "APPLICATIONS_PK" PRIMARY KEY ("APPID")
);
//自增触发器
CREATE OR REPLACE TRIGGER APPLICATIONS_TRI BEFORE
INSERT ON APPLICATIONS FOR EACH ROW
BEGIN
SELECT SEQ_APPID.NEXTVAL INTO: NEW.APPID FROM DUAL;
END;在SQLPlus中
能够创建序列和表,但创建触发器时一直等待,登录时用的是自己创建的一个用户
后来用DBA Studio来创建触发器,提示错误,好像是因为该用户没有权限
后来以system用户登录DBA Studio中的数据库创建触发器成功,但该触发器的状态显示invalid,也就是无效。
在SQLPlus中插入数据,就提示
触发器'触发器名称'无效且未通过重新确认
请教了,怎么解决
在system用户下建的触发器
建好触发器后,发现状态是invalid
要加个条件判断NEW.APPID是否为空
我给你一个我原来写过的给你参考create or replace trigger tri_tz_sxbfb
BEFORE insert on APPLICATIONS FOR EACH ROW
WHEN (NEW.ID IS NULL)
declare
begin
select SEQ_APPID.NEXTVAL into :new.APPID from dual;
end;
/