如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?


当前回答

有两种不同的方法来解决这个问题。两者都添加了一个默认值,但在这里为问题语句添加了完全不同的含义。

让我们从创建一些示例数据开始。

创建示例数据

CREATE TABLE ExistingTable (ID INT)
GO
INSERT INTO ExistingTable (ID)
VALUES (1), (2), (3)
GO
SELECT *
FROM ExistingTable

1.为以后的插入添加具有默认值的列

ALTER TABLE ExistingTable
ADD ColWithDefault VARCHAR(10) DEFAULT 'Hi'
GO

因此,现在我们在插入新记录时添加了一个默认列,如果没有提供值,它将默认值为“Hi”

INSERT INTO ExistingTable(ID)
VALUES (4)
GO
Select * from ExistingTable
GO

这解决了我们的问题,即默认值,但这里有一个解决问题的方法。如果我们希望在所有列中都有默认值,而不仅仅是将来的插入,该怎么办???为此,我们有方法2。

2.为所有插入添加具有默认值的列

ALTER TABLE ExistingTable
ADD DefaultColWithVal VARCHAR(10) DEFAULT 'DefaultAll'
WITH VALUES
GO
Select * from ExistingTable
GO

以下脚本将在每个可能的场景中添加一个具有默认值的新列。

希望这能为提出的问题增加价值。谢谢

其他回答

SQL Server+更改表+添加列+默认值uniqueidentifier。。。

ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO
ALTER TABLE <YOUR_TABLENAME>
ADD <YOUR_COLUMNNAME> <DATATYPE> <NULL|NOT NULL> 
ADD CONSTRAINT <CONSTRAINT_NAME>   ----OPTIONAL
DEFAULT <DEFAULT_VALUE>

如果您没有提供约束名称,那么SQLServer将使用默认名称。

示例:-

ALTER TABLE TEMP_TABLENAME
ADD COLUMN1 NUMERIC(10,0) NOT NULL
ADD CONSTRAINT ABCDE   ----OPTIONAL
DEFAULT (0)

如果默认值为Null,则:

在SQL Server中,打开目标表的树右键单击“列”==>新建列键入列“名称”,选择“类型”,然后选中“允许空值”复选框在菜单栏中,单击“保存”

完成!

Use:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())  
GO 

步骤1.首先,您必须使用添加字段来更改表

alter table table_name add field field_name data_type

步骤2创建默认值

USE data_base_name;
GO
CREATE DEFAULT default_name AS 'default_value';

步骤3然后您必须执行此过程

exec sp_bindefault 'default_name' , 'schema_name.table_name.field_name'

示例-

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';