首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

简单自增触发器,执行有有关问题,帮忙看看

2012-03-01 
简单自增触发器,执行有问题,帮忙看看CREATE TABLE authGroup(authGroupIDINTNOT NULL,authGroupName VARCH

简单自增触发器,执行有问题,帮忙看看
CREATE TABLE authGroup
(
  authGroupID INT NOT NULL,  
  authGroupName VARCHAR2(20)
);
 ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID); 

 CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE;
 CREATE OR REPLACE TRIGGER authGroupTrigger
  BEFORE INSERT ON authGroup FOR EACH ROW  
BEGIN  
SELECT S_authGroupID.NEXTVAL INTO :authGroup.authGroupID FROM DUAL;
END;  

建的一个自增触发器,可当:
INSERT INTO authGroup(authGroupName) VALUES('default');
时却出错:ORA-04098: trigger 'AUTHGROUPTRIGGER' is invalid and failed re-validation
大家帮忙看一下,触发器是不是错了


[解决办法]
CREATE OR REPLACE TRIGGER authGroupTrigger 
BEFORE INSERT ON authGroup FOR EACH ROW
BEGIN
SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL; 
END;

[解决办法]

SQL code
你的代码中存在中文";",修改后就可以了,参考如下:CREATE TABLE authGroup (   authGroupID  INT  NOT NULL,    authGroupName VARCHAR2(20) ); ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID); CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE; CREATE OR REPLACE TRIGGER authGroupTrigger   BEFORE INSERT ON authGroup FOR EACH ROW  BEGIN  SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL;END;  /INSERT INTO authGroup(authGroupName) VALUES('default'); SELECT * FROM authgroup;输出:1    default
[解决办法]
我这边ok,

SQL code
QL> CREATE TABLE authGroup  2  (  3    authGroupID  INT  NOT NULL,  4    authGroupName VARCHAR2(20)  5  );Table created.SQL> ALTER TABLE authGroup ADD PRIMARY KEY (authGroupID);Table altered.SQL> CREATE SEQUENCE S_authGroupID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLSequence created.SQL> CREATE OR REPLACE TRIGGER authGroupTrigger  2    BEFORE INSERT ON authGroup FOR EACH ROW  3  BEGIN  4   SELECT S_authGroupID.NEXTVAL INTO :new.authGroupID FROM DUAL;  5  END;  6  /Trigger created.SQL> insert into authgroup(authGroupName) values('testing');1 row created.SQL> select * from authgroup;AUTHGROUPID AUTHGROUPNAME----------- --------------------          1 testingSQL> insert into authgroup(authGroupName) values('testing2');1 row created.SQL> select * from authgroup;AUTHGROUPID AUTHGROUPNAME----------- --------------------          1 testing          2 testing2 

热点排行