Πώς μπορεί να προστεθεί μια στήλη με προεπιλεγμένη τιμή σε έναν υπάρχοντα πίνακα στον SQL Server 2000 / SQL Server 2005;
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Προαιρετικό όνομα περιορισμού:<br />,
Εάν παραλείψετε το CONSTRAINT D_SomeTable_SomeCol
τότε ο SQL Server θα δημιουργήσει αυτόματα<br />,
ένα Default-Contraint με ένα αστείο Όνομα όπως: DF__SomeTa__SomeC__4FB7FEF6
<br />,
Προαιρετική δήλωση με τιμές:<br />,
Η δήλωση WITH VALUES
είναι απαραίτητη μόνο όταν η στήλη σας είναι μηδενική<br />,
και θέλετε να χρησιμοποιείται η προεπιλεγμένη τιμή για τις υπάρχουσες εγγραφές,
Εάν η Στήλη σας είναι NOT NULL
, τότε θα χρησιμοποιηθεί αυτόματα η Προεπιλεγμένη τιμή<br />,
για όλες τις υπάρχουσες εγγραφές, είτε καθορίσετε WITH VALUES
είτε όχι.
Πώς λειτουργούν οι Εισαγωγές με έναν Προεπιλεγμένο Περιορισμό:<br />,
Εάν εισάγετε μια εγγραφή στον ΚάποιοΠίνακα
και δεν καθορίσετε την τιμή ΚάποιοCol
's, τότε θα έχει ως Προεπιλογή την τιμή 0
.<br />,
Αν εισάγετε μια Εγγραφή και ορίσετε την τιμή SomeCol
's ως NULL
(και η στήλη σας επιτρέπει nulls),<br />,
τότε ο Default-Constraint δεν θα χρησιμοποιηθεί και το NULL
θα εισαχθεί ως τιμή.<br />,
Οι σημειώσεις βασίστηκαν σε όλες's μεγάλη ανατροφοδότηση παρακάτω.<br />, Ιδιαίτερες ευχαριστίες στους:<br />, @Yatrix, @WalterStabosz, @YahooSerious και @StackMan για τα σχόλιά τους.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
Η συμπερίληψη του DEFAULT γεμίζει τη στήλη σε υπάρχουσες γραμμές με την προεπιλεγμένη τιμή, έτσι ώστε να μην παραβιάζεται ο περιορισμός NOT NULL.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
Το άρθρο ALTER TABLE (Transact-SQL) του MSDN περιέχει όλη τη σύνταξη του πίνακα alter.