문제

레코드 그룹을 통해 업데이트 명령을 실행하고 싶지만 업데이트 후 일부 레코드가 테이블 제약 조건을 위반하기 때문에 실패합니다. 어떻게 든 적합한 레코드 만 업데이트 할 수 있습니까?

도움이 되었습니까?

해결책

전부 또는 아무것도하지 않는 업데이트 동작 디자인별로

업데이트 명령에 Clauses를 추가하여 모든 제약 조건을 확인할 수 있지만 코드 복제가 발생하지 않습니다.

커서 또는 CLR 루프를 사용하여 한 번에 한 줄 씩 업데이트하는 것은 어떻습니까?

이것이 다층 응용 프로그램의 일부인 경우, 데이터베이스에 도달하기 전에 데이터 검증을 수행 할 수 있도록 메타 데이터 또는 스키마 심문을 통해 비즈니스 객체가 SQL 제약 조건에 대해 알아야하는 곳입니다.

그만큼 CSLA 프레임 워크 이것에 대한 좋은 음식이 있습니다

다른 팁

업데이트 문은 그 자체로 원자이며 모든 성공 또는 모두 실패합니다. 제약 조건을 위반하지 않는 행 만 업데이트하려면 SQL을 수정해야합니다.

WHERE 절에 제약 조건을 추가해야합니다.

각 줄에 대해 별도로 업데이트를 실행하거나 이는 전혀 좋은 생각처럼 보이지 않습니다.

이미 게시 된 답변 중 일부를 추가하려면 다음과 같은 답변에 서브 쿼리를 사용해야 할 수도 있습니다. 같은 (psuedo-code)

update mytable
set myfield = myval
where not exists (select from some table that would tell you if a constraint is violated for this row)

코드를 게시하면 더 많은 도움을 줄 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top