In MSSQL 2014 I would like to use an update syntax which is adding a new column with a default value. Is this possible somehow?
            Asked
            
        
        
            Active
            
        
            Viewed 2,962 times
        
    1
            
            
        - 
                    You should use alter table, not update. visit https://stackoverflow.com/questions/92082/add-a-column-with-a-default-value-to-an-existing-table-in-sql-server – Milad Aghamohammadi Oct 03 '18 at 09:31
- 
                    This has already been answered [here](https://stackoverflow.com/questions/92082/add-a-column-with-a-default-value-to-an-existing-table-in-sql-server), still works the same with 2014. – Yann G Oct 03 '18 at 09:32
- 
                    2Possible duplicate of [Add a column with a default value to an existing table in SQL Server](https://stackoverflow.com/questions/92082/add-a-column-with-a-default-value-to-an-existing-table-in-sql-server) – Diado Oct 03 '18 at 09:32
- 
                    Hi Peter, greetings from Vienna, welcome on Stackoverflow! Check out [this link](https://meta.stackoverflow.com/a/271056/9406040) on how to ask a good SQL question – Roman Oct 03 '18 at 10:24
3 Answers
5
            
            
        Something Like below:
alter table myTable add myNewColumn nvarchar(20) default 'myDefaultValue' not null
 
    
    
        apomene
        
- 14,282
- 9
- 46
- 72
2
            Here is a complete reproducible example.
Create table
CREATE TABLE employees
( employee_id INT NOT NULL,
  last_name VARCHAR(50) NOT NULL,
  first_name VARCHAR(50) NOT NULL,
  salary MONEY
);
INSERT INTO employees
VALUES (1, 'Miller', 'Peter', 80000);
INSERT INTO employees
VALUES (2, 'Myer', 'Joana', 90000);
Check contents
SELECT * FROM employees;
employee_id last_name   first_name  salary  
1           Miller      Peter       80000   
2           Myer        Joana       90000   
Add new column with default value
ALTER TABLE employees
ADD email VARCHAR(50) DEFAULT 'info@company.com' NOT NULL;
Check the result
SELECT * FROM employees;
employee_id last_name   first_name  salary  email
1           Miller      Peter       80000   info@company.com
2           Myer        Joana       90000   info@company.com
 
    
    
        Roman
        
- 4,744
- 2
- 16
- 58
1
            
            
        Try This :-
CREATE TABLE employees
( employee_id INT NOT NULL DEFAULT 0,
  last_name VARCHAR(50) NOT NULL DEFAULT 'jon',
  first_name VARCHAR(50) NOT NULL DEFAULT 'jona',
  salary MONEY DEFAULT 0
);
ALTER TABLE employees ADD designation VARCHAR(50) DEFAULT 'TL' NOT NULL; 
 
    
    
        Prakash Choudhary
        
- 101
- 6
- 
                    This creates a **new table** with default values, yes. But it does not update an **existing table**, which I think OP was after. – Roman Oct 03 '18 at 10:33
- 
                    
- 
                    Hey Prakash, your SQL statement is faulty. You are adding a constraint instead of a column (and also reference `#employees` instead of `employees`). Happy coding! – Roman Oct 04 '18 at 14:11
