我使用以下代码创建了现有数据库 (I_Customer) 的副本:
CREATE TABLE N_CUSTOMER AS SELECT * FROM I_CUSTOMER;
我创建了下表,它将作为修改 N_Customer 表的日志:
CREATE TABLE CUSTOMER_CHANGELOG
( cust_no NUMBER(5),
cust_name VARCHAR2(20),
contact VARCHAR2(20),
log_date DATE);
我还创建了(在堆栈成员的帮助下)以下触发器,该触发器将在编辑 N_Customer 表并将一些特定字段(新的和旧的)写入 Customer_Changelog 表后触发:
CREATE OR REPLACE
TRIGGER customer_up_tr
AFTER UPDATE ON n_customer
FOR EACH ROW
WHEN (OLD.contact <> 1 AND NEW.contact = 1 OR OLD.cust_name <> 1 AND NEW.cust_name = 1)
BEGIN
INSERT INTO customer_changelog (cust_no, cust_name, contact, log_date) VALUES (:OLD.cust_no, :OLD.cust_name, :OLD.contact, sysdate);
INSERT INTO customer_changelog (cust_no, cust_name, contact, log_date) VALUES (:NEW.cust_no, :NEW.cust_name, :NEW.contact, sysdate);
END;
现在,当我使用以下代码编辑 N_Customer 表时:
UPDATE N_CUSTOMER
SET cust_name = 'Peter Davis', contact = 'Sam Bogdanovich'
WHERE cust_no = 2338;
我收到此错误:
UPDATE N_CUSTOMER
*
ERROR at line 1:
ORA-01722: invalid number
现在我的数据类型等都匹配,所以我不确定是什么原因造成的。
任何想法将不胜感激。