创建 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;
这就是我需要完成的:创建一个名为 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;