it-swarm.com.de

"Der Wert NULL kann nicht eingefügt werden", aber es gibt keine NULL-Werte!

Diese Frage folgt der Antwort meiner anderen Frage dort: Einfügen mit OUTPUT korreliert mit der Unterabfragetabelle

Die Person.LastName-Spalte hat eine NOT NULL-Einschränkung. Wenn ich diesen Code ausführe:

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 ;

Ich erhalte folgende Fehlermeldung:

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

Die Sache ist, dass es keine FinancialInstitution.Name gibt, die NULL ist.

SELECT Name FROM FinancialInstitution WHERE Name = NULL

Dies gibt keine Zeile zurück. Außerdem funktioniert die Anfrage, wenn ich fi.Name durch einen Wert ('A Last Name') ersetze.

6
Yugo Amaryl

NULL ist kein Wert. Etwas kann nicht '=' NULL sein

Sie wollen:

SELECT Name FROM FinancialInstitution WHERE Name IS NULL
12
Mark Sinkinson