사용 된 try..catch 블록
뭔가 같은 ....
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO FakeTable (NotNullColumn) VALUES (NULL);
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION
PRINT 'Do something or nothing here'
END CATCH
당신에게 뭔가 잘못되면 오류가 발생할 때의 제어 할 수 있습니다.
null 값을 삽입 할 수 없으므로 Try 블록에서 컨트롤이 Catch 블록으로 점프합니다. 여기에서 명시 적으로 오류를 발생 시키거나 아무 것도 수행하지 않습니다.
내가 생각하는 당신의 코멘트를 읽은 후 편집
대신 삽입 트리거의 필요합니다. 뭔가가 ....
CREATE TRIGGER insert_Into_FakeTable
ON FakeTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO FakeTable (NotNullColumn)
SELECT NotNullColumn
FROM inserted
WHERE NotNullColumn IS NOT NULL
END
실제 Insert 문 대신 트리거가 발생하고 null이 아닌 값만 삽입됩니다.
실제 테이블로 직접 이동하는 대신 임시 테이블을 사용할 수 있습니까? – mrtig
'NOT NULL' 제약 조건은 이유가있을 수 있습니다. 참조 무결성으로 인해 이 문제를 해킹하는 것이 현명한 방법입니까? –
이것은 몇 시간 만에 단일 사용자로부터 두 번째로 잘못 문서화되고 설명 된 질문입니다. 남용으로보고하고 SO 커뮤니티를 모욕하지 않는 질문으로 넘어갈 것을 권장합니다. –