Πώς να προσθέσετε μια στήλη με προεπιλεγμένη τιμή σε έναν υπάρχοντα πίνακα στον SQL Server

Στον SQL server, Για να προσθέσετε μια στήλη με προεπιλεγμένη τιμή σε έναν υπάρχοντα πίνακα χρησιμοποιήστε τον πίνακα ALTER Πίνακας ADD Όνομα στήλης με περιορισμό NULL/NOT NULL με τιμή DEFAULT.

Η παρακάτω σύνταξη ερωτήματος του sql server μπορεί να χρησιμοποιηθεί για την προσθήκη μιας στήλης με προεπιλεγμένη τιμή στον υπάρχοντα πίνακα.

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Ας δούμε ένα παράδειγμα για να το κατανοήσουμε καλύτερα.

Προσθήκη μιας μη μηδενικής στήλης με προεπιλεγμένη τιμή για τις υπάρχουσες εγγραφές

Θεωρήστε έναν πίνακα Employee στον SQL server και αν θέλουμε να προσθέσουμε τη στήλη ελάχιστος μισθός με προεπιλεγμένη τιμή 1000USD, χρησιμοποιήστε το παρακάτω ερώτημα.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO

Το παραπάνω ερώτημα θα προσθέσει μια νέα στήλη MINIMUM_WAGE στον πίνακα Employee και θα γεμίσει τη στήλη στις υπάρχουσες γραμμές με την προεπιλεγμένη τιμή, δηλαδή 1000.

Επειδή έχουμε προσθέσει τον περιορισμό NOT NULL.

Εάν δεν προσθέσετε τον περιορισμό NOT NULL, όλες οι υπάρχουσες γραμμές θα είναι NULL και η τιμή DEFAULT που παρέχεται δεν θα έχει καμία επίπτωση.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Όλες οι τιμές της στήλης MINIMUM_WAGE θα είναι NULL.

Θα πρέπει να προσθέσετε την τιμή DEFAULT αν προσθέσετε τον περιορισμό NOT NULL αν ο πίνακας δεν είναι άδειος.

Για παράδειγμα, αν ο πίνακας Employee δεν είναι άδειος και αν προσθέσετε μια νέα στήλη με τον περιορισμό NOT NULL, θα εμφανιστεί σφάλμα.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

Το παραπάνω ερώτημα του sql server θα εμφανίσει το παρακάτω σφάλμα κατά την προσθήκη νέας στήλης στον υπάρχοντα πίνακα.

ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'MINIMUM_WAGE' cannot be added to non-empty table 'Employee' because it does not satisfy these conditions.

Εάν ο πίνακας Employee είναι άδειος.

Το παραπάνω ερώτημα του sql server θα προσθέσει μια νέα στήλη χωρίς προβλήματα.

Προσθήκη μηδενιζόμενης στήλης με προεπιλεγμένη τιμή για υπάρχουσες εγγραφές

Εάν θέλετε να προσθέσετε μια nullable στήλη με προεπιλεγμένη τιμή για υπάρχουσες εγγραφές, πρέπει να χρησιμοποιήσετε το WITH VALUES στην εντολή sql.

ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES

Το παραπάνω ερώτημα θα προσθέσει μια nullable στήλη στον πίνακα του sql server με την προεπιλεγμένη τιμή για τις υπάρχουσες εγγραφές.

Σε αυτό το σεμινάριο μάθαμε να προσθέτουμε μια στήλη, τόσο μηδενική όσο και μηδενική, στον πίνακα του sql server με προεπιλεγμένη τιμή για όλες τις υπάρχουσες εγγραφές.