>

이 질문은 다른 질문에 대한 답을 따릅니다. 하위 쿼리 테이블과 상관 된 OUTPUT으로 삽입

Person.LastName 열에는 NOT NULL 제약 조건이 있습니다. 이 코드를 실행할 때 :

CREATE TABLE tempIDs
( PersonId INT, 
  FinancialInstitutionId INT
);
MERGE INTO Person 
USING FinancialInstitution AS fi
  ON 1 = 0
WHEN NOT MATCHED THEN
  INSERT (CreationDate, AdministrativeStatus, LastName, Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1)
  VALUES (GetDate(), 'Legal', fi.Name, fi.Street, fi.Number, fi.City, fi.[State], fi.PostCode, fi.CountryId, fi.PhoneNumber, fi.Fax, fi.Email)
OUTPUT inserted.Id, fi.Id INTO tempIDs;
UPDATE fi
SET fi.PersonId = t.PersonId
FROM FinancialInstitution AS fi
  JOIN tempIDs AS t
    ON fi.Id = t.FinancialInstitutionId ;

다음 오류가 발생합니다 :

Cannot insert the value NULL into column 'LastName', table 'Person'; column does not allow nulls. UPDATE fails.

사물은 NULL 인 FinancialInstitution.Name이 없다는 것입니다.

SELECT Name FROM FinancialInstitution WHERE Name = NULL

이것은 행을 반환하지 않습니다. 또한 fi.Name을 값 ( '성')으로 바꾸면 요청이 작동합니다.

  • 답변 # 1

    NULL  값이 아닙니다. 무언가가 '='NULL 일 수 없습니다

    원한다 :

    SELECT Name FROM FinancialInstitution WHERE Name IS NULL
    
    

관련 자료

  • 이전 postgresql - 중복 행이없는 왼쪽 조인
  • 다음 mysql - MyISAM 테이블에서 2 천 8 백만 행을 가져 오는 데 얼마나 걸립니까?