Kal*_*ash 1 t-sql sql-server default-value
我想使用默认功能:
[Date] date default GETDATE ()
Run Code Online (Sandbox Code Playgroud)
我有一个大表,我只希望这段代码从现在开始,从表的开头.
例如,如果我有一个包含4000行的表,然后我使用上面的代码,它将为所有4000行提供相同的日期,这正是我想要避免的.
别担心.NULL
如果WITH VALUES
未指定选项,则该列将具有旧行的值.根据官方文件:
与价值观
指定DEFAULT constant_expression中给出的值存储在添加到现有行的新列中.如果添加的列允许空值并指定了WITH VALUES,则默认值将存储在新列中,并添加到现有行中.如果没有为允许空值的列指定WITH VALUES,则值NULL将存储在现有行的新列中.如果新列不允许空值,则无论是否指定了WITH VALUES,默认值都存储在新行中.
因此,添加新列时,NULL
将为所有现有行添加值.
例如:
CREATE TABLE [dbo].[StackOverflowTB]
(
[ID] TINYINT
);
GO
INSERT INTO [dbo].[StackOverflowTB] ([ID])
VALUES (1), (2), (3);
GO
ALTER TABLE [dbo].[StackOverflowTB]
ADD [Date] DATE DEFAULT(GETDATE())
GO
SELECT *
FROM [StackOverflowTB]
GO
INSERT INTO [dbo].[StackOverflowTB] ([ID])
VALUES (4);
GO
SELECT *
FROM [StackOverflowTB]
GO
DROP TABLE [dbo].[StackOverflowTB]
GO
Run Code Online (Sandbox Code Playgroud)
从下面的屏幕截图中可以看出,该default
值仅适用于新行: