Mar*_*tuc 5 mysql database db2 transactions
在DB2 中,我需要执行SELECT FROM UPDATE, 将更新 + 选择放在单个事务中。
但我需要确保每笔交易只更新一条记录。
限制可以更新的行数
我在DB2 的UPDATE参考资料中寻找了类似的东西,但没有成功。
如何在 DB2 中实现类似的功能?
编辑:在我的场景中,我必须根据要求提供 1000 个优惠券代码。我只需要选择尚未给出的(任何)一个。
该问题使用了一些模棱两可的术语,因此不清楚需要完成什么。幸运的是,DB2 为各种 SQL 模式提供了强大的支持。
要限制由 修改的行数UPDATE:
UPDATE
( SELECT t.column1 FROM someschema.sometable t WHERE ... FETCH FIRST ROW ONLY
)
SET column1 = 'newvalue';
Run Code Online (Sandbox Code Playgroud)
该UPDATE语句永远不会看到基表,只会看到过滤它的表达式,因此您可以控制更新哪些行。
INSERT有限数量的新行:
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;
Run Code Online (Sandbox Code Playgroud)
SELECT从UPDATE, INSERT, 或DELETE语句支持的方式:
SELECT column1 FROM NEW TABLE (
UPDATE ( SELECT column1 FROM someschema.sometable
WHERE ... FETCH FIRST ROW ONLY
)
SET column1 = 'newvalue'
) AS x;
Run Code Online (Sandbox Code Playgroud)
该SELECT会只从修改的行返回数据。
| 归档时间: |
|
| 查看次数: |
9341 次 |
| 最近记录: |