In SQL Server habe ich eine neue Spalte in einer Tabelle:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Dies schlägt fehl, weil ich NOT NULL angegeben habe, ohne eine Standardeinschränkung anzugeben. Die Tabelle sollte keine Standardeinschränkung haben.
Um dies zu umgehen, könnte ich die Tabelle mit der Standardeinschränkung erstellen und sie dann entfernen.
Es scheint jedoch keine Möglichkeit zu geben, anzugeben, dass die Standardeinschränkung als Teil dieser Anweisung benannt werden soll. Meine einzige Möglichkeit, sie zu entfernen, besteht darin, eine gespeicherte Prozedur zu haben, die sie in den sys.default_constraints nachschlägt Tabelle.
Dies ist ein bisschen chaotisch / ausführlich für eine Operation, die wahrscheinlich viel passieren wird. Hat jemand bessere Lösungen dafür?
NOT NULL
neben dem Datentyp setzen? Es mag syntaktisch gültig sein, es nach der Einschränkung zu setzen, aber es scheint verwirrend, es dort zu platzieren.quelle
Ich möchte einige Details hinzufügen, da die vorhandenen Antworten ziemlich dünn sind :
Der wichtigste Hinweis ist: Sie sollten niemals eine Einschränkung ohne expliziten Namen erstellen!
Das größte Problem bei unbenannten Einschränkungen : Wenn Sie dies auf verschiedenen Kundencomputern ausführen, erhalten Sie auf jedem Computer unterschiedliche / zufällige Namen .
Jedes zukünftige Upgrade-Skript wird echte Kopfschmerzen bereiten ...
Der allgemeine Rat lautet:
DF_TableName_ColumnName
für eine StandardeinschränkungCK_TableName_ColumnName
für eine PrüfbedingungUQ_TableName_ColumnName
für eine eindeutige EinschränkungPK_TableName
für eine PrimärschlüsseleinschränkungDie allgemeine Syntax lautet
Versuchen Sie dies hier
Sie können jeder Spalte weitere Einschränkungen hinzufügen und zusätzliche Einschränkungen hinzufügen, genau wie Sie Spalten nach einem Komma hinzufügen:
- einige Daten einfügen
quelle
Versuchen Sie es wie unten beschrieben.
quelle