mysql – 如何更新DB2中的一条记录?

在DB2中,我需要执行SELECT FROM UPDATE,在单个事务中放置更新选择.
但我需要确保每个事务只更新一条记录.

熟悉MySQL’s UPDATE选项中的LIMIT子句

places a limit on the number of rows that can be updated

我在DB2’s UPDATE reference寻找类似的东西,但没有成功.

如何在DB2中实现类似的功能?

编辑:在我的方案中,我必须根据要求提供1000个优惠券代码.我只需要选择(任何)尚未给出的那个.

解决方法:

这个问题使用了一些含糊不清的术语,使得不清楚需要完成什么.幸运的是,DB2为各种SQL模式提供了强大的支持.

要限制UPDATE修改的行数:

UPDATE 
( SELECT t.column1 FROM someschema.sometable t WHERE ... FETCH FIRST ROW ONLY
) 
SET column1 = 'newvalue';

UPDATE语句永远不会看到基表,只看到过滤它的表达式,因此您可以控制更新哪些行.

要插入有限数量的新行:

INSERT INTO mktg.offeredcoupons( cust_id, coupon_id, offered_on, expires_on )
SELECT c.cust_id, 1234, CURRENT TIMESTAMP, CURRENT TIMESTAMP + 30 DAYS 
FROM mktg.customers c 
LEFT OUTER JOIN mktg.offered_coupons o
ON o.cust_id = c.cust_id
WHERE ....
AND o.cust_id IS NULL
FETCH FIRST 1000 ROWS ONLY;

这就是DB2从UPDATE,INSERT或DELETE语句支持SELECT的方式:

SELECT column1 FROM NEW TABLE (
    UPDATE ( SELECT column1 FROM someschema.sometable 
             WHERE ... FETCH FIRST ROW ONLY
    ) 
    SET column1 = 'newvalue'
) AS x;

SELECT将仅从修改的行返回数据.

上一篇:DB2中ALTER TABLE的使用


下一篇:使用Java的DB2 Sequence值