공통 테이블 식을 사용하여 T-SQL에서 마술을 할 수 있지만 DB2 9.7에서 어떻게 수행 할 수 있습니까?첫 번째 행을 선택하고 IBM DB2 9.7에서 업데이트하는 방법
1. select the first row in a table
2. Update that specific row
두 단계는 하나의 트랜잭션 내에서 수행되어야합니다. 제발 도와주세요 :)
공통 테이블 식을 사용하여 T-SQL에서 마술을 할 수 있지만 DB2 9.7에서 어떻게 수행 할 수 있습니까?첫 번째 행을 선택하고 IBM DB2 9.7에서 업데이트하는 방법
1. select the first row in a table
2. Update that specific row
두 단계는 하나의 트랜잭션 내에서 수행되어야합니다. 제발 도와주세요 :)
커서를 반복 할 때 DB2에서 비슷한 것을 사용할 수 있습니다.
이begin
declare at_end sqlstate;
declare name anchor emp.name;
declare continue handler for not found
set at_end = TRUE;
declare c cursor for
select tabname from emp
for update;
open c;
fetch c into name;
if at_end <> TRUE then
update emp
set name = 'foo'
where current of c;
end if;
[email protected]
이 코드는 선택에서 입수해온 첫 번째 행을 업데이트 할 것입니다 : 여기
은 예입니다.이렇게하면 select 문을 발행 할 때 의도 업데이트 잠금이 만들어지고 업데이트 문에서 단독 잠금으로 변환됩니다. 따라서 일단 select가 완료되면 다른 트랜잭션이 행을 수정할 수 없습니다.
CTE 나 커서가 필요 없습니다! 간단히 전체 선택으로 행을 반환합니다 쿼리를 정의하고, 그 위에 업데이트를 실행하여 DB2 리눅스/유닉스/윈도우에서 테스트
UPDATE (
SELECT *
FROM schema.table
WHERE thing1 = 'blah'
AND thing2 = 'something'
ORDER BY key
FETCH FIRST ROW ONLY
)
SET thing3 = 'updated'
을 9.7
은 "처음 같은 건 없다 행 "을 관계형 데이터베이스의 테이블에 저장합니다. 데이터를 선택할 때 ORDER BY 절을 사용할 수 있지만, 그렇지 않은 경우에는 순서가 지정되지 않습니다. –
확실한 경우 주문을 포함해야합니다. – user1340582