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

trigger奇怪有关问题,

2012-02-28 
trigger奇怪问题,在线等,急!!!!!!!!!!创建trigger时老是报错表创建语句create table wl08ck1.a(a1 varchar

trigger奇怪问题,在线等,急!!!!!!!!!!
创建trigger时老是报错
表创建语句
create table wl08ck1.a(a1 varchar(5) primary key not null,a2 varchar(5));
create table wl08ck1.b(b1 varchar(5) primary key not null,b2 varchar(5));
trigger语句
create or replace trigger wl08ck1.a_test1
after insert 
on wl08ck1.a
for each row

begin

insert into b(b1,b2) values('1','2');

end ;
提示错误:无效sql语句
使用select * from user_triggers;查询,insert into b(b1,b2) values('1','2')后面的"; end"竟然没有了

去掉insert into b(b1,b2) values('1','2');的最后的“;”不再报错,但是执行insert 语句时报错,说触发器未通过无效


怎么回事啊????

在线等,急!!!!!!!!!!

[解决办法]
楼主的意思是往A表中插一条数据就望B表中插('1','2'); 吗?
[解决办法]
你的B表有主键约束,当望A表中插两条数据的时候,你的触发器就有问题了,
就会望B表中插2条('1','2'); ,这样就违反了B表的主键约束,会报错的!
[解决办法]
我的环境运行没问题的。

SQL code
SQL> create table dss_dev.a_1(a1 varchar(5) primary key not null,a2 varchar(5));Table createdSQL> create table dss_dev.b_1(b1 varchar(5) primary key not null,b2 varchar(5));Table createdSQL> SQL> create or replace trigger dss_dev.a_test1_1  2  after insert  3  on a_1  4  for each row  5    6  begin  7    8  insert into b_1(b1,b2) values('1','2');  9   10  end ; 11  /Trigger createdSQL>
[解决办法]
SQL code
把空行去掉试试,因为在sqlplus中连续的两个空行就会导致语句结束.CREATE OR REPLACE TRIGGER WL08CK1.A_TEST1  AFTER INSERT ON WL08CK1.A  FOR EACH ROWBEGIN  INSERT INTO B (B1, B2) VALUES ('1', '2');END;/
[解决办法]
违反的主键约束所以出错!

热点排行