db2 v7R1 - 触发 INSERT New As XML Str
db2 v7R1 - Trigger INSERT New As XML Str
正在尝试将更改记录创建为 XML 字符串。
下面的代码不起作用,要么 XML 无法转换为 varchar,要么 SQL 无效错误。
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO "QS36F"."WEBTEST2" ( PREVIOUS_R , NEW_R , ENTRY_DATE ) VALUES ( NULL , CAST(XMLROW(R.ID,R.ITEMNUMBER) as varchar(16355)), CURRENT_TIMESTAMP )
也试过
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO "QS36F"."WEBTEST2" ( PREVIOUS_R , NEW_R , ENTRY_DATE ) VALUES ( NULL , CAST((SELECT XMLROW(R.ID, R.ITEMNUMBER) FROM sysibm.sysdummy1) as varchar(16355)) , CURRENT_TIMESTAMP )
还尝试将 WEBTEST2 的数据类型设置为 XML... 没有骰子。
[]
编辑:
编辑 2:
我得到
[SQL0312] Variable ITEMNUMBER not defined or not usable.
对于以下查询?
CREATE TRIGGER "QS36F"."WEBTEST1_U"
AFTER UPDATE ON "QS36F"."WEBTEST1"
REFERENCING
OLD AS o
NEW AS r
FOR EACH ROW MODE DB2SQL
INSERT INTO
"QS36F"."WEBTEST2" ( NEW_R , PREVIOUS_R, ENTRY_DATE )
VALUES ( (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (r.id, r.itemnumber)) as tbl
), (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (o.id, o.itemnumber)) as tbl
)
, CURRENT_TIMESTAMP
)
);
试试这个...
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO
"QS36F"."WEBTEST2" ( NEW_R , ENTRY_DATE )
VALUES ( (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (r.id, r.itemnumber)) as tbl
)
, CURRENT_TIMESTAMP
)
);
正在尝试将更改记录创建为 XML 字符串。
下面的代码不起作用,要么 XML 无法转换为 varchar,要么 SQL 无效错误。
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO "QS36F"."WEBTEST2" ( PREVIOUS_R , NEW_R , ENTRY_DATE ) VALUES ( NULL , CAST(XMLROW(R.ID,R.ITEMNUMBER) as varchar(16355)), CURRENT_TIMESTAMP )
也试过
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO "QS36F"."WEBTEST2" ( PREVIOUS_R , NEW_R , ENTRY_DATE ) VALUES ( NULL , CAST((SELECT XMLROW(R.ID, R.ITEMNUMBER) FROM sysibm.sysdummy1) as varchar(16355)) , CURRENT_TIMESTAMP )
还尝试将 WEBTEST2 的数据类型设置为 XML... 没有骰子。
[
编辑:
编辑 2:
我得到
[SQL0312] Variable ITEMNUMBER not defined or not usable.
对于以下查询?
CREATE TRIGGER "QS36F"."WEBTEST1_U"
AFTER UPDATE ON "QS36F"."WEBTEST1"
REFERENCING
OLD AS o
NEW AS r
FOR EACH ROW MODE DB2SQL
INSERT INTO
"QS36F"."WEBTEST2" ( NEW_R , PREVIOUS_R, ENTRY_DATE )
VALUES ( (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (r.id, r.itemnumber)) as tbl
), (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (o.id, o.itemnumber)) as tbl
)
, CURRENT_TIMESTAMP
)
);
试试这个...
CREATE TRIGGER "QS36F"."WEBTEST1_I"
AFTER INSERT ON "QS36F"."WEBTEST1"
REFERENCING NEW AS R
FOR EACH ROW MODE DB2SQL
INSERT INTO
"QS36F"."WEBTEST2" ( NEW_R , ENTRY_DATE )
VALUES ( (select xmlserialize(XMLROW(id as id,itemnumber as itemnumber) as varchar(16355))
from table ( values (r.id, r.itemnumber)) as tbl
)
, CURRENT_TIMESTAMP
)
);