簡體   English   中英

創建Oracle SQL觸發器錯誤

[英]Creating Oracle SQL Trigger Error

這是我需要完成的任務:創建一個名為tgr_customer_insert的TRIGGER,該觸發器將在客戶表中插入一行后觸發。 可以在創建持卡人表之后創建觸發器,因此觸發器可以位於剛創建的同一ps16a.sql文件中。 當將行插入到temp_table_customers表中時,此觸發器將在持卡人表中插入一行。 以下是要插入的列:card_number(使用seq_cardholder序列號插入)customer_id(這是使用:new.column_name語法的temp_table_customer表的綁定變量)credit_limit(這是使用temp_table_customer表的綁定變量) :new.column_name語法)

這是我的代碼:

`CREATE OR REPLACE TRIGGER tgr_customer_insert
AFTER INSERT
   ON customers
   FOR EACH ROW
BEGIN
   -- Insert record into customers table
   INSERT INTO cardholder
   ( card_number,
     customer_id,
     credit_limit
   )
   VALUES
   ( new.seq_cardholder,
     :new.customer_id,
     :new.credit_limit
   );
END;

`

錯誤是:ORA-24344:成功,編譯錯誤第3行位置4。

頭發被撕掉了。 預先感謝您抽出寶貴的時間處理此事。

我認為您在INSERT VALUES中缺少第一個值綁定的“:”。

CREATE OR REPLACE TRIGGER tgr_customer_insert
AFTER INSERT
   ON customers
   FOR EACH ROW
BEGIN
   -- Insert record into customers table
   INSERT INTO cardholder
   ( card_number,
     customer_id,
     credit_limit
   )
   VALUES
   ( :new.seq_cardholder,
     :new.customer_id,
     :new.credit_limit
   );
END;

如果“ seq_cardholder”是一個序列,則必須使用以下方法:

CREATE OR REPLACE TRIGGER tgr_customer_insert
AFTER INSERT
   ON customers
   FOR EACH ROW
BEGIN
   -- Insert record into customers table
   INSERT INTO cardholder
   ( card_number,
     customer_id,
     credit_limit
   )
   VALUES
   ( seq_cardholder.nextval,
     :new.customer_id,
     :new.credit_limit
   );
END;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM