有没有办法DateTime.Now在Sql Server中设置列的默认值?
例:
table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null
Run Code Online (Sandbox Code Playgroud)
这条线:
Insert into Event(Description) values('teste');
Run Code Online (Sandbox Code Playgroud)
应该插入一行,Date值应该是当前日期.
Jas*_*son 94
使用GETDATE()函数作为值添加默认约束.
ALTER TABLE myTable
ADD CONSTRAINT CONSTRAINT_NAME
DEFAULT GETDATE() FOR myColumn
Run Code Online (Sandbox Code Playgroud)
小智 19
CREATE TABLE Orders(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE() // you can set default constraints while creating the table
)
Run Code Online (Sandbox Code Playgroud)
您可以使用:
Insert into Event(Description,Date) values('teste', GETDATE());
Run Code Online (Sandbox Code Playgroud)
此外,您可以更改表格,以便“日期”具有默认值“GETDATE()”
我的数据库项目也遇到了这种需求。我决定在这里分享我的发现。
1)当数据已经存在时,没有办法在没有默认值的情况下使用 NOT NULL 字段(我可以添加没有 DEFAULT 值的非空列吗)
2)这个话题已经讨论了很长时间了。这是一个 2008 年的问题(向 SQL Server 中的现有表添加具有默认值的列)
3) DEFAULT 约束用于为列提供默认值。如果没有指定其他值,则默认值将添加到所有新记录中。(https://www.w3schools.com/sql/sql_default.asp)
4) 我用于开发的 Visual Studio 数据库项目非常适合为您生成更改脚本。这是为我的数据库升级创建的更改脚本:
GO
PRINT N'Altering [dbo].[PROD_WHSE_ACTUAL]...';
GO
ALTER TABLE [dbo].[PROD_WHSE_ACTUAL]
ADD [DATE] DATE DEFAULT getdate() NOT NULL;
Run Code Online (Sandbox Code Playgroud)
-
以下是我使用 Visual Studio 进行开发更新数据库所采取的步骤。
1)添加默认值(Visual Studio SSDT:DB项目:表设计器)

2) 使用架构比较工具生成更改脚本。
code already provided above
Run Code Online (Sandbox Code Playgroud)