次のクエリを実行しようとしています。私はそれがうまくいくと信じていますが、私は実行していないようですCREATE Statement
この原因はLoco_No.Loco_Class_No.Max_Tow_Weight
、PL/SQLで機能するかどうかわからないこのロジックです。
CREATE TABLE Train
(Train_No integer PRIMARY KEY,
Loco_No integer
REFERENCES Locomotive(Loco_No),
Back_Loco_No float
REFERENCES Locomotive(Loco_No),
Train_Length float
CONSTRAINT Train_Len
CHECK(Train_Length <= 400),
Train_Weight float
CONSTRAINT Train_Weight
CHECK(Train_Weight <= Loco_No.Loco_Class_No.Max_Tow_Weight)));
私Max_Tow_Weight
はこのように私を呼ぶことができませんか?
参照用の他のテーブル
CREATE TABLE Locomotive
(Loco_No integer PRIMARY KEY,
Serial_No integer UNIQUE,
Loco_Class_No integer
REFERENCES Locomotive_Class(Loco_Class_No),
Loco_name varchar2(20));
CREATE TABLE Locomotive_Class
(Loco_Class_No integer PRIMARY KEY,
Max_Tow_Weight float NOT NULL,
Loco_Class_Len float NOT NULL);
アップデート
CREATE TRIGGER LOCOWEIGHT
BEFORE INSERT
ON Locomotive_Class
REFERENCING NEW AS New
FOR EACH ROW
BEGIN
SELECT Train_Weight FROM locomotive
IF (Train_Weight < MAX_TOW_WEIGHT) THEN
RAISE cError;
EXCEPTION
WHEN cError THEN
RAISE_APPLICATION_EXCEPTION('Train weight has exceeded max tow weight');
END;