Nicht hinzufügen ein "not NULL" - Spalte, um die leeren Tabelle in SQL Server
Ich verstehe, dass, wenn das hinzufügen einer Spalte zu einer Tabelle mit Daten in SQL-server, muss die Spalte einen NULL-option oder Standard. Ansonsten, was würde der SQL Server-pad die neuen Zeilen mit?
Ich bin ratlos, warum kann ich nicht hinzufügen einer not NULL-Spalte einer leeren Tabelle jedoch. Ich habe versucht dies auf zwei Instanzen von SQL 2008 und eine Instanz von SQL 2005 ohne Probleme. Aber bei einem Kunden mit SQL 2000, die dieses problem haben. Ist das mit SQL 2000 oder ist es eine option, die Sie deaktivieren können. Hoffen wir, dass es eine option.
Select @@Version
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows
NT 5.1 (Build 2600: Service Pack 3)
Select count(*) from actinv
0
ALTER TABLE [ActInv] ADD [BATCHNUMBER] NVARCHAR(50) NOT NULL
Msg 4901, Ebene 16, Status 1, Zeile 1
ALTER TABLE nur können Spalten Hinzugefügt werden, die null-Werte enthalten kann, oder eine
STANDARD-definition angegeben werden. Die Spalte "BATCHNUMBER" kann nicht Hinzugefügt werden Tabelle
'ActInv", weil es keine null-Werte zulässt und nicht Voreinstellen
definition.
Auch ich mache Select count(*) from ActInv und gibt null zurück!
Slect count(*) gibt nur Datensätze, in denen mindestens eine Spalte nicht null ist. Ich weiß, klingt dumm, aber versuchen Sie ein select * from Tabelle statt.
Ich habe nie wusste, dass! Wählen Sie * gibt null Zeilen, obwohl ich gerade überprüft.
Neil N, Sie sind falsch. create table b(int) insert b-Werte(null) select count(*) von b-1
InformationsquelleAutor user69374 | 2009-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL Server 2000 wird nicht überprüfen Sie, ob eine leere Tabelle. Was Sie sehen, ist eine Verbesserung in SQL Server 2005/2008.
Entweder der folgende zwei-Schritt-Verfahren wird die änderung in SQL Server 2000 gegen eine leere Tabelle:
gehen
Dies funktionierte perfekt - außer zwischen Ändern der Tabelle, fügen Sie die Spalte null-Werte zulässt, und die Änderung der Tabelle KEINE NULL, ich hatte zu AKTUALISIEREN <table> newcol = <value>. SQL wird nicht zulassen, dass eine Spalte null, alle null-Werte konvertiert werden, um eine not NULL-Spalte. Offensichtlich wirklich 🙂
Diese Antwort ist spezifisch für OP ' s Frage, wo die OP hatte ein leer Platz für eine Tabelle in SQL Server 2000. Mit einer leeren Tabelle ein update ist ein no-op, und nicht gebraucht. SQL Server 2005 und höher überprüfen Sie die Tabelle, wenn das hinzufügen einer not null-Spalte, und gehen Sie vor, wenn die Tabelle leer ist.
InformationsquelleAutor Shannon Severance
Ich habe keinen Zugriff auf 2000 zu überprüfen, aber können Sie fügen Sie eine Spalte mit der Bezeichnung default, so dass es gelingt, dann legen Sie einfach das mit dem Namen default?
InformationsquelleAutor A-K
Die Fehlermeldung sagt dir, dass du nicht fügen Sie die neue Spalte , weil es keine null-Werte zulässt und nicht geben Sie eine STANDARD-definition.
Müssen Sie einen Standardwert, den null-Bereich:
Edit: ich sah nur genau das, was Sie tun, auf separaten SQL-Server-Installationen (2000 und 2005). Wenn die Tabelle wirklich leer ist vielleicht die beste Lösung zu löschen/erstellen der Tabelle. Es klingt wie ein Fehler in SQL Server 2000.
Die Frage ist, warum tut SQL2000 muss ein DEFAULT, wenn es keine Zeilen in der Tabelle? SQL2005 und SQL2008 nicht!
InformationsquelleAutor Andrew Hare
Haben Sie sich Folgendes überlegt 2 in der Reihenfolge:
Ich denke, dass sollte auf 2000 (ich habe nur 2005 hier)
InformationsquelleAutor feihtthief