【发布时间】:2013-12-03 18:10:54
【问题描述】:
我为我的数据库中的一个表创建了一个更新后触发器,当一个特定列中的值被修改时,它也会从另一个数据库更新同一个表。我的问题是,我如何检查结果是否为 0(这意味着该行在第二个数据库中不存在,而 1 表示该行存在且已更新)并采取相应措施?我想如果我得到 0 这意味着这样的主键不存在,在第二个数据库中创建它。这是我的 ORACLE 触发代码:
CREATE OR REPLACE TRIGGER UPDATE_BIOGR
AFTER UPDATE OF ID_PATIENTS,NAME,SNAME,GENDER,DATE_BORN,COUNTRY,CITY,BLOODTYPE,FATHER_ID,MOTHER_ID,FATHER_NAME,FATHER_LASTNAME,MOTHER_FIRSTNAME,MOTHER_LASTNAME,TIL,E_MAIL ON BIOGR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_username varchar2(10);
BEGIN
SELECT user INTO v_username
FROM dual;
UPDATE PERSONAL_RECORD.BIOGR SET
ID = :NEW.ID_PATIENTS, NAME = :NEW.NAME, SNAME = :NEW.SNAME, GENDER = :NEW.GENDER, DATEBORN = :NEW.DATE_BORN, PLACE_BORN = :NEW.COUNTRY,
PLACE_STATE = :NEW.CITY, BLOOD_TYPE = :NEW.BLOODTYPE, ID_FATHER = :NEW.FATHER_ID, ID_MOTHER = :NEW.MOTHER_ID,
FATHER_NAME = :NEW.FATHER_NAME, FATHER_SNAME = :NEW.FATHER_LASTNAME, MOTHER_NAME = :NEW.MOTHER_FIRSTNAME,
MOTHER_SNAME = :NEW.MOTHER_LASTNAME, TIL = :NEW.TIL, EMAIL = :NEW.E_MAIL, UPDATED_FROM = v_username
WHERE PERSONAL_RECORD.BIOGR.ID = :NEW.ID_PATIENTS;
END;
【问题讨论】:
-
试试MERGE 语句,这样您可以更新现有列或插入新列。