题目要求
如果删除某个stuinfo表的一个学员,在删除之前备份该学员信息到stuInfo_bak表自行创建), 级联删除stuScore表中其所有成绩信息,级联删除其stuAnswer表答题信息。我先写了备份那句CREATE OR REPLACE TRIGGER trig_delStuinfo 
before delete on stuinfo 
referencing old as o 
for each row 
begin 
  insert into stuinfo_bak values (:o.id,:o.stuid,:o.stuclass,:o.sheetname,:o.stuscore,:o.standard); 
end;但编译提示
2/41     PLS-00049: 错误的赋值变量 'O.STUID'
2/62     PLS-00049: 错误的赋值变量 'O.SHEETNAME'
2/75     PLS-00049: 错误的赋值变量 'O.STUSCORE'
2/87     PLS-00049: 错误的赋值变量 'O.STANDARD'
有错吗?书上也是这么写的

解决方案 »

  1.   


    CREATE TABLE answer (
    id int PRIMARY KEY ,
    qNum varchar2 (50)  NOT  NULL ,
    qAns varchar2 (50)  NOT  NULL ,
    sheetName varchar2 (20)  NOT  NULL 
    ); CREATE TABLE stuInfo (
    id int PRIMARY KEY ,
    stuName varchar2 (50)  NOT NULL ,
    password varchar2 (10) NOT NULL ,
    stuClass varchar2 (10) NULL ,
    actor varchar2 (10) NOT NULL,
    computer varchar2 (50) DEFAULT '0' NOT NULL
    );CREATE TABLE stuScore (
    id int PRIMARY KEY ,
    stuId int NOT NULL ,
    stuClass varchar2 (10) NULL,
    sheetName varchar2 (20) NOT NULL ,
    stuScore number(4,1)NOT NULL,
    standard varchar2(20) NULL
    );CREATE TABLE stuAnswer (
    id int PRIMARY KEY ,
    stuId int NOT NULL ,
    qNum varchar2 (50) NOT NULL ,
    stuAns varchar2 (50),
    computer varchar2 (50),
    sheetName varchar2 (20)  NULL 
    );
    CREATE TABLE stuinfo_bak (
    id int PRIMARY KEY ,
    stuId int NOT NULL ,
    stuClass varchar2 (10) NULL,
    sheetName varchar2 (20) NOT NULL ,
    stuScore number(4,1)NOT NULL,
    standard varchar2(20) NULL
    );
      

  2.   

    你的stuinfo表没有:o.stuid,:o.sheetname,:o.stuscore,:o.standard这几个字段?
    所以错误啊!
      

  3.   

    我修正了stinfo_bak表结构后,执行触发器,提示“未连接到oracle”
    执行其他语句都没问题,就是编译这个触发器时oracle会断开连接,这是什么原因