container
을 나타내는 many-to-many 관계가 item
입니다.returning 절이 항상 먼저 실행됩니까?
테이블에 기본 키 row_id가 있습니다.
4 행 : (container_id, item_id) values (1778712425160346751, 4)
을 삽입합니다. 이 행은 앞에서 설명한 고유 한 row_id를 제외하고는 동일합니다.
난 이후에 다음 쿼리를 실행합니다
delete from contains
where item_id = 4 and
container_id = '1778712425160346751' and
row_id =
(
select max(row_id) from contains
where container_id = '1778712425160346751' and
item_id = 4
)
returning
(
select count(*) from contains
where container_id = '1778712425160346751' and
item_id = 4
);
은 지금은 3이 쿼리에서 반환받을 것으로 예상하지만, 내가 원하는 동작을 4입니다 점점 4를 얻었으나,이 예상되지 않는 것 .
내 질문 : 언제든지 returning
절이 삭제 전에 실행되거나 특정 버전이나 특정 소프트웨어의 고유 한 특성 일 수 있습니까?
나는 업데이트를 할 경우는 반환 값이 ** 후 ** 업데이트 값 보인다 것을 지적하고 싶다. 모래로 만들어진성에 관한 코멘트를 삽입하십시오 ... – tenCupMaximum
삭제되거나 업데이트 된 컬럼의 값은 항상 최신이며, 우리는'returning' 절의 ** 서브 쿼리 **에 대해 이야기하고 있습니다. – klin
아아, 내가'returned select updateColumn from table'을하면 오래된 값을 얻습니다.'returnedColumn'을 반환하면 업데이트 된 값을 얻습니다. 그것은 합리적인 결과입니다. – tenCupMaximum