创建 Oracle SQL 触发器错误

Creating Oracle SQL Trigger Error

这就是我需要完成的:创建一个名为 tgr_customer_insert 的触发器,它将在客户 table 中插入一行后触发。 可以在创建持卡人 table 之后创建触发器,因此它可以在刚刚创建的同一个 ps16a.sql 文件中。当向 temp_table_customers table 中插入一行时,此触发器将向持卡人 table 中插入一行。以下是要插入的列: card_number(这是使用 seq_cardholder 序列号插入的) customer_id(这是来自 temp_table_customer table 的绑定变量,使用 :new.column_name 语法) credit_limit(这是来自 temp_table_customer table 的绑定变量,使用 :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;