2010-03-30 2 views

답변

1

트랜잭션을 시작하고 삭제 한 다음 롤백하십시오. pgAdmin에서

test1=> begin; 
BEGIN 
test1=> delete from test1 where test1_id = 1; 
DELETE 2 
test1=> rollback; 
ROLLBACK 

(이하 "역사"탭에서 "출력 창"에) :

psql의에서

-- Executing query: 
begin; 
Query returned successfully with no result in 16 ms. 

-- Executing query: 
delete from test1 where test1_id = 1; 
Query returned successfully: 2 rows affected, 16 ms execution time. 

-- Executing query: 
rollback; 
Query returned successfully with no result in 16 ms. 
1

나는 자동으로이 작업을 수행하는 방법을 잘 모르겠다.하지만 항상 선택을하고 삭제할 수있다. 앤드류의 말처럼 대화 형 관리를 수행 할 때

SELECT COUNT(*) FROM foo WHERE delete_me=true; 

DELETE FROM foo WHERE delete_me=true; 
1

, 당신은 단지 SELECT COUNT(*)에 의해 DELETE을 대체 할 수 있습니다. 당신이 (삭제를 실행 후 )는 프로그램이 당신의에서이 정보를 원하는 경우

많은 프로그래밍 언어는 이것에 대한 구조를 제공한다. 예를 들어, PHP에서는 pg_affected_rows이고 .NET에서는 반환 값이 ExecuteNonQuery입니다.

0

사용 RETURNING 그리고 당신은 SELECT를 가져올 것 같은 결과를 가져 오기 -result :

DELETE FROM test1 WHERE test1_id = 1 RETURNING id; 

이 기능은 버전 8.2 이후 작동합니다.

관련 문제