这就是我需要完成的任务:创建一个名为tgr_customer_insert的TRIGGER,它将在将一行插入customers表后触发。 创建持卡人表后可以创建触发器,因此它可以位于刚创建的同一个ps16a.sql文件中。当一行插入temp_table_customers表时,此触发器将在cardholder表中插入一行。以下是要插入的列: card_number(使用seq_cardholder序列号插入) customer_id(这是来自temp_table_customer表的绑定变量,使用:new.column_name语法) credit_limit(这是使用:new.column_name语法从temp_table_customer表中绑定变量)
这是我的代码:
`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位。
头发被撕掉了。提前感谢您抽出时间。
答案 0 :(得分:0)
我认为你在第一个值绑定的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;