关于DB2 / 400 SQL(以及一般来说,对SQL)的问题:是否有一种方法可以检索经过“更新”或“插入”请求后修改或插入的ID列表,而无需进行繁琐的机械记录? >
在此先感谢您的想法或意见。
谢谢
答案 0 :(得分:1)
根据注释中的建议...对于插入,请使用str_extract_all
版本的插入
SELECT <..> FROM FINAL TABLE
如果在插入触发器或引用约束之后有更改插入数据的操作,则如上所述使用 CREATE TABLE EMPSAMP
(EMPNO INTEGER GENERATED ALWAYS AS IDENTITY,
NAME CHAR(30),
SALARY DECIMAL(10,2),
DEPTNO SMALLINT,
LEVEL CHAR(30),
HIRETYPE VARCHAR(30) NOT NULL DEFAULT 'New Employee',
HIREDATE DATE NOT NULL WITH DEFAULT)
SELECT EMPNO, HIRETYPE, HIREDATE
FROM FINAL TABLE ( INSERT INTO EMPSAMP (NAME, SALARY, DEPTNO, LEVEL)
VALUES('Mary Smith', 35000.00, 11, 'Associate'))
将导致错误。您可以改用FINAL TABLE
。但是,NEW TABLE
的结果来自触发器和参照约束之前的结果。因此,表中最终的数据可能与返回的数据不同。
不幸的是,NEW TABLE
语句没有等效的data-change-table-reference。.
您在更新中的用例是什么?
答案 1 :(得分:0)
如果每行都有一个唯一的ID,则可以仅创建ID的临时数据集,然后更新/插入数据。
对于插入,其他答案将起作用。
要进行更新,您可以执行以下操作。
2018-12-31
它正在倒退一些,但是是避免必须处理日记并避免逐条记录地遍历文件记录以进行更新(使用FOR循环)的最简单方法。