数据库服务器:Oracle 11g
我需要帮助我如何从2张表中获取信息
使用触发器审核表
.
我有两张桌子
一对多关系
.
父表:
CREATE TABLE "CLIENT_DETAILS" (
ID NUMBER(12) PRIMARY KEY NOT NULL ENABLE,
FIRSTNAME VARCHAR2(20) NOT NULL,
RATING NUMBER(3) NOT NULL,
BIRTHDATE DATE NOT NULL
);
子表:
CREATE TABLE "CLIENT_ORDERS" (
ID NUMBER(12) PRIMARY KEY NOT NULL ENABLE,
CLIENT_DETAILS_ID NUMBER(12) REFERENCES CLIENT_DETAILS(ID),
REMARKS VARCHAR2(50) NOT NULL,
DATE_TRANS TIMESTAMP NOT NULL
);
审计表:
CREATE TABLE "CLIENT_ORDERS_AUDIT" (
CLIENT_DETAILS_ID NUMBER(12) NOT NULL,
FIRSTNAME VARCHAR2(20) NOT NULL,
REMARKS VARCHAR2(50) NOT NULL,
BIRTHDATE DATE NOT NULL,
RATING VARCHR2(3) NOT NULL,
DATE_TRANS TIMESTAMP NOT NULL
);
父触发器:
CREATE OR REPLACE TRIGGER "CLIENT_DETAILS_TRG"
BEFORE INSERT ON "CLIENT_DETAILS"
FOR EACH ROW
DECLARE
v_user VARCHAR2(50);
BEGIN
IF INSERTING THEN
INSERT INTO "CLIENT_ORDERS_AUDIT"
(ID, FIRSTNAME, REMARKS, BIRTHDATE, RATING, DATE_TRANS)
VALUES (:NEW.ID, :NEW.FIRSTNAME, NEW:RATNG, :NEW.BIRTHDATE);
END IF;
END;
/
COMMIT;
EXIT;
子触发器:
CREATE OR REPLACE TRIGGER "CLIENT_ORDERS_TRG"
BEFORE INSERT ON "CLIENT_ORDERS"
FOR EACH ROW
DECLARE
v_user VARCHAR2(50);
BEGIN
IF INSERTING THEN
INSERT INTO "CLIENT_ORDERS_AUDIT"
(REMARKS, DATE_TRANS)
VALUES (:NEW.REMARKS, :NEW.DATE_TRANS');
END IF;
END;
/
COMMIT;
EXIT;
审核表包含来自client_details和client_orders表的列。如何使用触发器将所有信息输入审核表?
我最初做的是创建两个触发器。
当父表和子表中发生插入时,这两个触发器将数据插入到审核表中。但每次我将数据插入client_orders(child)表时,都会遇到一个约束冲突,即父表中的列不要求为空。
我可以在审计表中插入数据吗?请给我点光。我试图寻找,但找不到解决办法。谢谢。