SQLWKS> drop table teacher;
语句已处理。
SQLWKS>
SQLWKS> create table teacher(
2> tno number(4) primary key,
3> tname varchar2(10) not null,
4> tage number(2) constraint t1 check(tage between 20 and 70),
5> pos varchar2(10),
6> sal number(8,2) constraint t2 check (sal>500),
7> pri number(8,2));
语句已处理。
SQLWKS>
SQLWKS> create or replace trigger updsal1
2> before insert or update of sal,pos on teacher
3> for each row
4> when(new.pos='教授')
5> begin
6> if new.sal<1000 then new.sal=1000;
7> end if;
8> end;
9>
10> insert into teacher values(8001,'t1',35,'助教',800,200);
11> insert into teacher values(8002,'t2',38,'讲师',1000,200);
12> insert into teacher values(8003,'t3',45,'教授',1800,200);
13> insert into teacher values(8004,'t4',65,'助教',800,200);
14> insert into teacher values(8005,'t5',55,'讲师',890,200);
15> insert into teacher values(8006,'t6',35,'教授',800,200);
16>
17> select *from teacher;
18>
MGR-00072: There is no more information about this error.最后一句那个MGR-00072的错误是怎么回事啊,程序过不去啊。。
忘望教导。。
语句已处理。
SQLWKS>
SQLWKS> create table teacher(
2> tno number(4) primary key,
3> tname varchar2(10) not null,
4> tage number(2) constraint t1 check(tage between 20 and 70),
5> pos varchar2(10),
6> sal number(8,2) constraint t2 check (sal>500),
7> pri number(8,2));
语句已处理。
SQLWKS>
SQLWKS> create or replace trigger updsal1
2> before insert or update of sal,pos on teacher
3> for each row
4> when(new.pos='教授')
5> begin
6> if new.sal<1000 then new.sal=1000;
7> end if;
8> end;
9>
10> insert into teacher values(8001,'t1',35,'助教',800,200);
11> insert into teacher values(8002,'t2',38,'讲师',1000,200);
12> insert into teacher values(8003,'t3',45,'教授',1800,200);
13> insert into teacher values(8004,'t4',65,'助教',800,200);
14> insert into teacher values(8005,'t5',55,'讲师',890,200);
15> insert into teacher values(8006,'t6',35,'教授',800,200);
16>
17> select *from teacher;
18>
MGR-00072: There is no more information about this error.最后一句那个MGR-00072的错误是怎么回事啊,程序过不去啊。。
忘望教导。。
2> before insert or update of sal,pos on teacher
3> for each row
4> when(new.pos='教授')
5> begin
6> if new.sal<1000 then new.sal=1000;
7> end if;
8> end;
9> /在命令行编译trigger,procedure,function等,需要在代码之后增加"/"
sqlplus的 "/" 表示执行
(
tno number(4) primary key,
tname varchar2(10) not null,
tage number(2) constraint t1 check(tage between 20 and 70),
pos varchar2(10),
sal number(8,2) constraint t2 check (sal>500),
pri number(8,2)
);insert into T88 values(8001,'t1',35,'助教',800,200);
insert into T88 values(8002,'t2',38,'讲师',1000,200);
insert into T88 values(8003,'t3',45,'教授',1800,200);
insert into T88 values(8004,'t4',65,'助教',800,200);
insert into T88 values(8005,'t5',55,'讲师',890,200);
insert into T88 values(8006,'t6',35,'教授',800,200);
触发器:CREATE OR REPLACE TRIGGER updsal1
BEFORE INSERT OR UPDATE OF pos, sal ON T88
FOR EACH ROW
WHEN (NEW.pos = '教授')
BEGIN
IF :NEW.sal < 1000 THEN
:NEW.sal := 1000;
END IF;
END;
实测结果:(已经将插入的职位为教授的记录,工资<1000,调整为1000