0

Oracleでトリガーを作成したい。in my order テーブルが更新または挿入されると、dateOrdReceivedトリガーはこの日付を取得し、14 日更新して別のテーブル productList ordDateDelivery に等しくなるようにします。

dateOrdReceived + 14 days = new ordDateDelivery

私は数回試みましたが、2 つのテーブルを結合するクエリが必要だと推測しました。また、DATEADD を使用すると 14 日を追加できる可能性があることもわかりましたが、完全に正しくすることはできません。

私のトリガーの試み

`CREATE OR REPLACE TRIGGER  "PRODUCTLIST_DATE_DELIVERY" 
BEFORE
insert or update on "PRODUCTLIST"
for each row

begin
select p.dateOrdRecieved, o.ordDateDelivery
from productList p JOIN orders o
ON p.ordID = o.ordID;

new.OrdDateDelivery := DATEADD(day,14,new.p.dateOrdRecieved)

end;


/
ALTER TRIGGER  "PRODUCTLIST_DELIVERY_DATE" ENABLE

このトリガーのテーブルは次のとおりです

PRODUCTLIST TABLE

CREATE TABLE  "PRODUCTLIST" 
(   "ORDID" NUMBER(3,0) NOT NULL ENABLE, 
"PRODUCTID" NUMBER(3,0) NOT NULL ENABLE, 
"QUANTITY" NUMBER(4,2) NOT NULL ENABLE, 
"ORDDATEDELIVERY" DATE, 
"DISCOUNT" NUMBER(3,0), 
"TOTALCOST" NUMBER(4,2), 
 CONSTRAINT "PK_PRODUCTLIST" PRIMARY KEY ("ORDID", "PRODUCTID") ENABLE
)
/
ALTER TABLE  "PRODUCTLIST" ADD CONSTRAINT "FK_ORDERS" FOREIGN KEY ("ORDID")
  REFERENCES  "ORDERS" ("ORDID") ENABLE
/
ALTER TABLE  "PRODUCTLIST" ADD CONSTRAINT "FK_PRODUCTS" FOREIGN KEY ("PRODUCTID")
  REFERENCES  "PRODUCT" ("PRODUCTID") ENABLE
/

ORDERS TABLE

CREATE TABLE  "ORDERS" 
(   "ORDID" NUMBER(3,0) NOT NULL ENABLE, 
"DATEORDRECIEVED" DATE, 
"CUSID" NUMBER(3,0) NOT NULL ENABLE, 
 PRIMARY KEY ("ORDID") ENABLE
)
/
ALTER TABLE  "ORDERS" ADD CONSTRAINT "FK_CUSTOMER" FOREIGN KEY ("CUSID")
  REFERENCES  "CUSTOMER" ("CUSID") ENABLE
/
4

1 に答える 1