oracle 触发器 实现更新一张表格时向另一张表格插入数据

时间:2022-11-13 00:48:21
不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——

6 个解决方案

#1


引用 楼主 xg123321123 的回复:
不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;

#2


引用 1 楼 zlloct 的回复:
Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


你好! 谢谢你的帮助,看到回复后,我自己倒腾了半个多小时,但在我修改leave_apply表格时..还是出现那个触发器无效的错误。

#3


引用 1 楼 zlloct 的回复:
Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~

#4


引用 3 楼 xg123321123 的回复:
Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的

#5


引用 4 楼 zlloct 的回复:
Quote: 引用 3 楼 xg123321123 的回复:

Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的



您是成都的啊?  哈哈、我是内江的、目前在武汉上学呢   问题愉快地解决了  谢谢您的耐心回答啦--    

#6


引用 5 楼 xg123321123 的回复:
Quote: 引用 4 楼 zlloct 的回复:

Quote: 引用 3 楼 xg123321123 的回复:

Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的



您是成都的啊?  哈哈、我是内江的、目前在武汉上学呢   问题愉快地解决了  谢谢您的耐心回答啦--    


更巧的是我是内江资中的,现在在成都工作。去过很多次武汉

#1


引用 楼主 xg123321123 的回复:
不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;

#2


引用 1 楼 zlloct 的回复:
Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


你好! 谢谢你的帮助,看到回复后,我自己倒腾了半个多小时,但在我修改leave_apply表格时..还是出现那个触发器无效的错误。

#3


引用 1 楼 zlloct 的回复:
Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~

#4


引用 3 楼 xg123321123 的回复:
Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的

#5


引用 4 楼 zlloct 的回复:
Quote: 引用 3 楼 xg123321123 的回复:

Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的



您是成都的啊?  哈哈、我是内江的、目前在武汉上学呢   问题愉快地解决了  谢谢您的耐心回答啦--    

#6


引用 5 楼 xg123321123 的回复:
Quote: 引用 4 楼 zlloct 的回复:

Quote: 引用 3 楼 xg123321123 的回复:

Quote: 引用 1 楼 zlloct 的回复:

Quote: 引用 楼主 xg123321123 的回复:

不好意思、有个触发器修改了一下午还是 显示“触发器无效且未通过验证”、希望好心人能够帮我解答下,先谢谢了!
现在有2张表格:message 和leave_apply
message结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
leave_apply结构如图。 oracle 触发器 实现更新一张表格时向另一张表格插入数据
我想要实现,当update leave_apply表格中的state列时,自动向message表插入一条数据。messageNum设置为主键自增,content的内容为“同学你好,你的申请单” 与state(更新之后的值)拼接而成,applyNum和studentNum为leave_apply中的applynum和studentNum,time为系统当前时间。

CREATE SEQUENCE Increase_Sequence6
 INCREMENT BY 1     
     START WITH 1     
     NOMAXVALUE        
     NOCYCLE            
     CACHE 10; 
     
CREATE TRIGGER tri_update6 after
update of state ON  leave_apply FOR EACH ROW
begin
select to_char(Increase_Sequence6.nextval) into:message(messageNum) from dual;
insert into message(content) values("同学你好,你的申请单"+:New.state)
insert into message(applyNum) values(leave_apply(applyNum))
insert into message(studentnum) values(leave_apply(studentNum))
insert into message(time) values(sysdate)
 

end;

commit

第一次发帖,本不愿做伸手党的,确实自己实力有限,谢谢——



CREATE or replace TRIGGER tri_update6
  after update of state ON leave_apply
  FOR EACH ROW
declare
  i number;
begin
  select Increase_Sequence6.nextval into i from dual;
  insert into message
  values
    (i,
     '同学你好,你的申请单' || :new.state,
     :old.applynum,
     :old.studentnum,
     sysdate);
end;


您好! 您是对的,之前建立了太多序列和触发器了,有些乱,彻底清理了一遍后,分开建立序列和触发器,再执行就成功了。试了几十遍,来来回回的重启PL/SQL developer,真是到了一种最后成功了,都没有多大高兴劲的地步了。太感谢您~


我正准备回你了,因为我完全试过的,你可以好好的看一下。也可以网上看看Trigger的写法,对你应该有帮助的



您是成都的啊?  哈哈、我是内江的、目前在武汉上学呢   问题愉快地解决了  谢谢您的耐心回答啦--    


更巧的是我是内江资中的,现在在成都工作。去过很多次武汉