I already have a table which consists of data. I need to alter the table to add two new columns which are not null. How can I do that without losing any existing data?
Here's what I tried (via right-clicking the table and selecting Design):
Added new columns 'EmpFlag' (bit, null), 'CreatedDate' (datetime, null)
Updated 'EmpFlag' column in the table, to have some valid values. (Just wanted to work on one field, so I didn't update 'CreatedDate' field)
Now right clicked table, design, and made it not null.
When I tried to save, this error message appeared:
Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created.
To enforce NOT NULL for a column in SQL Server, use the ALTER TABLE .. ALTER COLUMN command and restate the column definition, adding the NOT NULL attribute.
It is possible to add a NOT NULL constraint to an existing table by using the ALTER TABLE statement. In this case, the column_name must not contain any NULL value before applying the NOT NULL constraint.
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.
You just set a default value in the new columns and that will allow you to add them.
alter table table_name add column_name datetime not null constraint DF_Default_Object_Name default (getdate())
or this one for a varchar field.
alter table table_name add column_name varchar(10) not null constraint DF_Default_Object_Name default ('A')
You can also drop the default if you do not need it after you added the column.
alter table table_name drop constraint DF_Default_Object_Name
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With