//创建序列,用于表中主键的自增
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中插入数据,就提示
触发器'触发器名称'无效且未通过重新确认
请教了,怎么解决

解决方案 »

  1.   

    在inte用户下建的表和序列
    在system用户下建的触发器
    建好触发器后,发现状态是invalid
      

  2.   

    告诉你一个调试的方法PL/SQL对DBA,特别是程序开发人员特别有用他可以让你调试TRIGGER,PROCEDURE等等你那设置为主键的话肯定是通不过的
    要加个条件判断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;
    /
      

  3.   

    有个问题问下楼主,这个序列为什么用触发器完成呢?在做数据insert 直接写进SQL中不可以吗?