我已经创建了一个更新后触发器,并希望在更新触发时从两个不同的表(GORADID和SPRIDEN)添加数据。这两个表都通过一列(PIDM)连接,因此是否也可以从表2中收集数据?到目前为止我一直在收到ORA等错误:没有绑定变量.. 我也试过做一个select语句。但也没有运气。任何建议都会有所帮助。
error: psl-00049: bad bind variable ':new.spriden_id'
error: psl-00049: bad bind variable ':new.spriden_first_name'
error: psl-00049: bad bind variable ':new.spriden_last_name'
答案 0 :(得分:1)
您的触发器属于GORADID表,而:new和:old代表此表
你可以试试这样改变你的触发器吗?CREATE OR REPLACE TRIGGER GORADID_UPDT_TRG1
AFTER UPDATE OF GORADID_ADDITIONAL_ID
ON GORADID
FOR EACH ROW
DECLARE
SZRGORA_AUDIT_USER_BANNER_ID VARCHAR2 (150 CHAR);
SZRGORA_AUDIT_STUDENT_BANNER VARCHAR2 (9 CHAR);
SZRGORA_AUDIT_USER_FIRST_NAME VARCHAR2 (150 CHAR);
SZRGORA_AUDIT_USER_LAST_NAME VARCHAR2 (150 CHAR);
SZRGORA_AUDIT_ADDITIONAL_ID VARCHAR2 (50 CHAR);
SPRIDEN_ID VARCHAR2 (9 CHAR);
BEGIN
SELECT USER INTO SZRGORA_AUDIT_USER_BANNER_ID FROM DUAL;
SELECT SPRIDEN_ID
INTO SZRGORA_AUDIT_STUDENT_BANNER
FROM SPRIDEN
WHERE SPRIDEN_PIDM =:old.GORADID_PIDM;
SELECT SPRIDEN_FIRST_NAME, SPRIDEN_LAST_NAME
INTO SZRGORA_AUDIT_USER_FIRST_NAME, SZRGORA_AUDIT_USER_LAST_NAME
FROM SATURN.SPRIDEN
WHERE SPRIDEN_PIDM = (SELECT PIDM
FROM SATURN.IDM_STAFF_AFF_ST
WHERE USERNAME = USER);
INSERT INTO SZRGORA_AUDIT
VALUES (SZRGORA_AUDIT_STUDENT_BANNER,
:new.GORADID_ADDITIONAL_ID,
:old.GORADID_ADDITIONAL_ID,
SZRGORA_AUDIT_USER_FIRST_NAME,
SZRGORA_AUDIT_USER_LAST_NAME,
USER,
'UPDATE',
SYSDATE,
:new.GORADID_SURROGATE_ID,
:new.GORADID_VERSION,
:new.GORADID_VPDI_CODE);
END;
答案 1 :(得分:1)
尝试以下触发器代码。请注意,在编写触发器ON GORADID表时,您只能对表class MyQwtPlotZoomer : public QwtPlotZoomer
{
public:
MyQwtPlotZoomer(int xAxis, int yAxis, QwtPlotCanvas* canvas, bool doReplot = true) : QwtPlotZoomer(xAxis, yAxis, canvas, doReplot){ }
virtual ~MyQwtPlotZoomer(){ }
protected:
virtual void widgetKeyPressEvent(QKeyEvent* ke)
{
if ( !isActive() )
{
if ( keyMatch( KeyUndo, ke ) )
zoom( -1 );
else if ( keyMatch( KeyRedo, ke ) )
zoom( +1 );
else if ( keyMatch( KeyHome, ke ) )
zoom( 0 );
}
}
virtual void widgetKeyReleaseEvent(QKeyEvent*){ }
};
的列使用:new
和:old
。
您正在选择GORADID
。因此,您应该在接下来的查询中使用USER INTO SZRGORA_AUDIT_USER_BANNER_ID
,而不是说SZRGORA_AUDIT_USER_BANNER_ID
。我认为直接说USER
是行不通的。
USERNAME = USER