-1

nm_employeesテーブルから値を削除するときに、terminated_employeesテーブルに値を入力するトリガーを作成しようとしています。トリガーを作成しましたが、PLステートメントのコンパイルエラーが発生します。何か案は?

CREATE TABLE nm_departments(
dept2 varchar(20),
CONSTRAINT empPK PRIMARY KEY (dept2)
);

CREATE TABLE nm_employees(
name varchar(20),
dept varchar(20),
CONSTRAINT departments FOREIGN KEY (dept) REFERENCES nm_departments (dept2)ON DELETE     CASCADE
);

CREATE TABLE terminated_employees(
te_name varchar(20),
te_dept varchar(20)
);

CREATE OR REPLACE TRIGGER DeleteCustomer
BEFORE DELETE ON nm_employees
FOR EACH ROW
BEGIN
INSERT INTO terminated_employees (te_name,te_dept)
VALUES(:Old.te_name, :Old.te_dept);
END DeleteCustomer;
4

1 に答える 1

1

*nm_employees* にトリガーを記述している場合、これはコンパイルされます。これは、記述しなければならないコードになります

 CREATE TABLE nm_departments(
    dept2 varchar(20),
    CONSTRAINT empPK PRIMARY KEY (dept2)
    );

CREATE TABLE nm_employees(
name varchar(20),
dept varchar(20),
CONSTRAINT departments FOREIGN KEY (dept) REFERENCES nm_departments (dept2)ON DELETE     CASCADE
);

CREATE TABLE terminated_employees(
te_name varchar(20),
te_dept varchar(20)
);

CREATE OR REPLACE TRIGGER DeleteCustomer
BEFORE DELETE ON nm_employees
FOR EACH ROW
BEGIN
INSERT INTO terminated_employees (te_name,te_dept)
VALUES(:Old.name, :Old.dept);
END DeleteCustomer;
于 2012-11-29T05:23:48.053 に答える