1
psycopg를 사용하여 트랜잭션을 구현하려고합니다. 분리를 적용 할 수 없습니다.
이
내가 구현하고자하는 SQL입니다 :BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT * FROM students WHERE matnr = 123457 FOR UPDATE;
UPDATE studierende
SET name = 'Name' WHERE matnr = 123457;
COMMIT;
을하지만
self.dbConnect = pg.connect(host=db_host,
database=db_database, user=db_user, password=db_password)
를 연결하고 분리 레벨
self.dbConnect.set_isolation_level(3);
를 설정하고 .execute("SELECT...FOR UPDATE", data)
다른 사람들이 선택할 수 있도록 행을 잠궈 야합니다. 그러나 격리 수준을 설정했지만 다른 병렬 쿼리에서 행을 실행하고 심지어 업데이트 할 수도 있습니다. 첫 번째 사용자가 변경 사항을 커밋 할 때까지 잠금 상태를 유지해야합니다.
psql 터미널에서 이것은 불가능합니다. 하지만 여기 있습니다. 왜?