SELECT문에만 사용하던 WITH UR을 INSERT, UPDATE, DELETE에 사용해도 별다른 에러가 발생하지 않았습니다. 혹시 WITH UR을 INSERT, UPDATE, DELETE문에 사용하면 의미와 처리가 달라지나요? ex : INSERT INTO TEST (A) VALUES ('A') WITH UR; UPDATE TEST SET A = '1' WITH UR;
무의미합니다. WITH ~ 에 관계없이, DBMS는 삽입, 갱신, 삭제되는 모든 행에 독점 잠금을 합니다. 따라서, 응용프로그램 프로세스에서 변경된 행을 COMMIT, ROLLBACK 하기 전까진 어떤 다른 응용프로그램 프로세스에 의해서도 변경되지 않게 합니다. 물론 다른 응용프로그램 프로세스에서 WITH UR을 사용하면 읽을수는있습니다.
답변 감사합니다. *^^*
select , insert , update 등등 사용해도 아무런 문제가 발생하지 않습니다.. with ur 의 의미는 밑의분의 말씀하신것이 맞습니다.. 어떤 테이블에 insert작업을 하고 있다 그런데 with ur 를 쓰게되면 다른사람이 insert 하고 있는 테이블을 insert 된 시점까지 데이터를 select를 할수가 있습니다.. ibm에서는 가능한 with ur를 쓰는 것을 권장하는 것 같습니다.. 많이 사용하는 테이블을 with ur을 주지 않고 사용하면 다른 사람들은 접근을 할수가 없어 select 를 할수가 없게 됩니다..
처리성격에 따라서 달리 할 필요가 있을듯 합니다. 아래현상이 발생 할 수도.. 더티 읽기 : 1. 작업1에서 행을 삽입,수정합니다. 2. 작업2는 작업1에서 COMMIT을 수행하기 전에 행을 읽습니다. 3. 그런후 작업1이 ROLLBACK을 수행하면, 작업2는 존재하지 않는 행을 읽은 것이 됩니다. 반복 불가능한 읽기 : 1. 작업1에서 행을 읽습니다. 2. 작업2가 행을 수정하고 COMMIT을 수행합니다. 3. 그런후 작업1이 행을 다시 읽으면, 수정된 값을 받을 수도 있습니다. 팬텀 : 1. 작업1이 검색조건을 만족시키는 n행 집합을 읽습니다. 2. 그런후 작업2는 검색조건을 만족시키는 하나 이상의 행을 INSERT합니다. 3. 작업11이 같은 검색조건으로 첫번째 읽기를 반복하면, 원래의 행과 삽입된 행을 얻습니다.