trigger奇怪问题,在线等,急!!!!!!!!!!

天开之想 2008-08-22 03:38:19
创建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 语句时报错,说触发器未通过无效


怎么回事啊????

在线等,急!!!!!!!!!!
...全文
49 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
天开之想 2008-08-22
没有违反主键,我做的操作就是这些sql语句,没有任何其他操作。
回复
cosio 2008-08-22
违反的主键约束所以出错!
回复
oracledbalgtu 2008-08-22

把空行去掉试试,因为在sqlplus中连续的两个空行就会导致语句结束.
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;
/
[Quote=引用楼主 yuzhongcao 的帖子:]
创建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 us…
[/Quote]
回复
mantisXF 2008-08-22
我的环境运行没问题的。


SQL> create table dss_dev.a_1(a1 varchar(5) primary key not null,a2 varchar(5));

Table created

SQL> create table dss_dev.b_1(b1 varchar(5) primary key not null,b2 varchar(5));

Table created

SQL>
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 created

SQL>

回复
fxianxian 2008-08-22
你的B表有主键约束,当望A表中插两条数据的时候,你的触发器就有问题了,
就会望B表中插2条('1','2'); ,这样就违反了B表的主键约束,会报错的!
回复
fxianxian 2008-08-22
楼主的意思是往A表中插一条数据就望B表中插('1','2'); 吗?
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2008-08-22 03:38
社区公告
暂无公告