2010-12-08 2 views
2

2008 R2 내가 실행 :SSMS에서 xml 값이있는 행을 삭제 (편집) 할 수없는 이유는 무엇입니까? SSMS에서

create table aaa(col1 xml); 
go 
insert into aaa (col1) 
values('<ccc>ddd</ccc>') 
go 2 

그런 다음, SSMS (마우스 오른쪽 버튼으로 클릭 개체 탐색기에서 테이블을)를 "편집 톱 200 행"옵션에서 열려있는 테이블 행을 선택, Enter 키를 눌러 (키보드 버튼을 삭제),
오류를 확인하고 받으려면 [예]를 클릭하십시오.

행을 삭제하거나 편집 할 수없는 이유는 무엇입니까?

[1]

--------------------------- 
Microsoft SQL Server Management Studio 
--------------------------- 
No rows were deleted. 

A problem occurred attempting to delete row 1. 
Error Source: Microsoft.SqlServer.Management.DataTools. 
Error Message: The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows). 

Correct the errors and attempt to delete the row again or press ESC to cancel the change(s). 
--------------------------- 
OK Help 
--------------------------- 

업데이트 : SSMS 생각
는 XML-antogonistic이지만, 이것은 디자이너/마법사의 제한 사항입니다

create table bbb(col1 int); 
go 
insert into bbb (col1) 
values(33) 
go 2 

답변

6

어떤 유형과 동일

행이 동일하기 때문에 SQL 서버에 삭제할 행이 두 개가있는 것은 아닙니다. 이는 사람이 아닌 프로그램이라는 것을 기억하십시오. 이유는

set rowcount 1 

delete 
from aaa 
where convert(varchar(max),col1) = '<ccc>ddd</ccc>' 

set rowcount 0 
+1

+1 와우, 감사, 이것은 무엇을하는 테이블에 PK)

당신은 쿼리 창

delete top (1) from aaa where convert(varchar(max),col1) = '<ccc>ddd</ccc>' 

에서 이상 구문 그것을 그러나 할 수 있습니다합니다 SQL Server 전문가가 다른 사람의 업무를 방해하는 돈을받습니다! –

+2

@ vgv8, 나는 @SQLMenace가 이것보다 훨씬 더 복잡한 일을하기 위해 돈을받는다고 확신합니다. – HLGEM

+0

@HLGEM, 귀하의 정보에 감사드립니다. 실제로 나는 이것에 대한 태도를 알기를 원했지만 평범한 해결책은 아니었다. 이것은 아무도 비정상적인 것으로 놀랍지는 않았지만 그것이 왜 그렇게 이상하게 설명했다. SSMS가 행을 구분할 수없고, 행이 다르며, 선택된 행과 다른 행이 구별되지 않는 것은 사실이 아닙니다. –

관련 문제