내가 가지고 bit
열 그 플래그가 설정되었을 때 추적하는 해당 datetime2
열이있는 테이블에 다음과 같이체크 제약 조건 위반
CREATE TABLE MyTable
(
Id int primary key identity,
Processed bit not null,
DateTimeProcessed datetime2
)
내가 점검 제한 조건을 추가 한을 :
:ALTER TABLE MyTable
ADD CHECK ((Processed = 0 AND DateTimeProcessed IS NULL)
OR (Processed = 1 AND DateTimeProcessed IS NOT NULL))
는 I은
AFTER UPDATE
트리거를 사용
DateTimeProcessed
열의 설정을 제어하려고
AFTER UPDATE
트리거가 실행되기 전에 검사 제한 조건이 적용되므로 Processed
열이 업데이트되면 제약 조건이 위반됩니다.
여기서 내가하려고하는 것을 달성하는 가장 좋은 방법은 무엇입니까?
"주석 제안"전을 "트리거는 SQL Server가"BEFORE "트리거가 없기 때문에 아마도 삭제되었습니다. ... 예, 아마도 그 이유가 될 것입니다. :) – grin0048
해답을 보내 주셔서 감사합니다. 'DateTimeProcessed'가 직접 업데이트되면 에러를 던지는 것은 여기에 추가 할 마지막 부분처럼 보입니다. – grin0048
@ grin0048 : 예, 나는 그 시나리오에서 오류를 던지라고 제안 했습니까, 그것이 당신이 말하는 내용입니까, 아니면 내 업데이트를 보지 못했습니까? 그럼에도 불구하고 글 머리 기호의 순서를 다시 정렬하고 오류 및 취소를 처리하는 코드 및 코드와 관련이없는 새로운 (알려진 적은) 옵션과 같은 세부 정보를 추가했습니다. –