webentwicklung-frage-antwort-db.com.de

Ändern Sie eine Spalte, um Nullen nicht zuzulassen

Daher möchte ich eine Spalte in meiner SQL Server-Datenbank so ändern, dass keine Nullen zulässig sind, aber es wird immer wieder eine Fehlermeldung angezeigt. Dies ist die SQL-Anweisung, die ich verwende:

alter table [dbo].[mydatabase] alter column WeekInt int not null

und das ist der Fehler, den ich erhalte:

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'WeekInt', table 'CustomerRadar.dbo.tblRWCampaignMessages'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

Ich bin mir ziemlich sicher, dass mein SQL-Code richtig ist, und es gibt derzeit keine Nullen in der Spalte, die ich zu ändern versuche. Daher bin ich mir nicht sicher, was das Problem verursacht. Irgendwelche Ideen? Ich bin ratlos.

11
user2255811

Die Tabelle enthält eindeutig NULL Werte. Welche können Sie überprüfen mit:

select *
from mydatabase
where WeekInt is NULL;

Dann können Sie eines von zwei Dingen tun. Ändern Sie entweder die Werte:

update mydatabase
    set WeekInt = -1
    where WeekInt is null;

Oder löschen Sie die fehlerhaften Zeilen:

delete from mydatabase
    where WeekInt is null;

Wenn alle Werte in Ordnung sind, können Sie die Anweisung alter table ausführen.

10
Gordon Linoff

Wenn Sie versuchen, eine Spalte in nicht null zu ändern, und diese Fehlermeldung angezeigt wird, stellen Sie sicher, dass Sie nach is null und nicht nach = null suchen (was zu unterschiedlichen Ergebnissen führt).

Select * from ... where column is null

anstatt

Select * from ... where column = null

Ich füge dies hinzu, weil es mich gestolpert und eine Weile gedauert hat, um es zu lösen.

0
Greg Gum