2013-09-26 2 views
15

SQL Server 관리자를 통해 레코드를 업데이트 한 적이 있습니다.SQL Server에서 업데이트 후 커밋 문을 실행해야합니까?

Update 문에서 명시 적 커밋이없는 경우 수동으로 작성하려고합니다. 당신이 트랜잭션을 사용하지 않는

Update mytable 
set status=0; 
Commit; 

어떤 거래를 필요로하지 않는다 오라클과는 달리

+0

에 당신은 커밋하기 전에 트랜잭션을 시작해야한다. –

+2

거래를 열어야합니다. 그 안에는 업데이트를 수행 한 다음 변경 사항을 커밋해야합니다. – lexeme

+0

어떻게 작동하는지보십시오 : http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET – lexeme

답변

30

SQL Server Management Studio에서 암시 적 커밋이 설정되어 있으므로 실행 된 모든 문이 암시 적으로 커밋됩니다.

기본값 인 명령이 자동으로 커밋되지 않는 Oracle 백그라운드에서 발생하는 경우 이것은 무서운 것일 수 있습니다. 그러나 그다지 문제는 아닙니다. 당신은 여전히 ​​임시 트랜잭션을 사용하려면

, 당신은 항상 SSMS에서

BEGIN TRANSACTION 

을 실행하고 시스템보다 사용자가 데이터를 커밋을 기다립니다 수 있습니다. 당신이 오라클 동작을 복제, 그리고 암시 적 트랜잭션을 시작하려면 몇 가지 DML/DDL이 발행 될 때마다

는, 당신은 SET를 설정할 수 있습니다 IMPLICIT_TRANSACTIONS 체크 박스를

Tools -> Options -> Query Execution -> SQL Server -> ANSI 
+2

안녕하세요 @SWeko. 매우 도움이됩니다. 내가 옳다고 가정하면, 체크 박스를 선택하지 않으면 트랜잭션이 암시 적으로 커밋됩니다. 그게 내 (기본값) 상황. 그 체크 박스의 이름이 이상하다. btw, 관련 문제는 여기에 : http://stackoverflow.com/questions/17576649/safely-delete-rows-in-sqlserver-so-you-can-rollback-a-commit –

+0

대답 주셔서 감사합니다 – Patan

+0

확인란이 checked, then SELECT 문은 명시 적으로 커밋 될 필요가있는 트랜잭션을 암시 적으로 시작합니다. – SWeko

5

SQL Server를 시작했다 커밋하지 않기 때문에 나는 메시지를 받고 있습니다 커밋합니다.
업데이트 진술 바로 뒤에 테이블이 커밋되므로이 시나리오에서는 커밋 명령을 사용하지 마십시오.

관련 문제