自动在数据库中创建DateTime字段?

Roc*_*oal 30 database datetime database-design field sql-server-express

我正在组建一个简单的测试数据库来学习MVC.我想添加一个DateTime字段来显示记录何时创建.

ID = int
Name = Char
DateCreated = (dateTime, DateTime2..?)
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,这种类型的DateTime捕获可以自动完成 - 但这就是我所拥有的一种感觉.可以吗?如果是这样怎么样?

当我们讨论这个主题时:如果我想要包含另一个捕获记录最后更新的DateTime的字段,我该怎么做.

我希望不要手动执行此操作.

非常感谢

麦克风

Ant*_*Ant 41

您需要将日期字段的"默认值"设置为getdate().插入表中的任何记录都将自动将插入日期作为此字段的值.

"默认值"属性的位置取决于您运行的SQL Server Express的版本,但如果在编辑表时选择表的日期字段,则该属性应该是可见的.


Kev*_*vin 34

是的,这是一个例子:

CREATE TABLE myTable ( col1 int, createdDate datetime DEFAULT(getdate()), updatedDate datetime DEFAULT(getdate()) )
Run Code Online (Sandbox Code Playgroud)

您可以在不指示createdDate和updatedDate列的情况下INSERT到表中:

INSERT INTO myTable (col1) VALUES (1)
Run Code Online (Sandbox Code Playgroud)

或者使用关键字DEFAULT:

INSERT INTO myTable (col1, createdDate, updatedDate) VALUES (1, DEFAULT, DEFAULT)
Run Code Online (Sandbox Code Playgroud)

然后创建一个更新updatedDate列的触发器:

CREATE TRIGGER dbo.updateMyTable 
ON dbo.myTable
FOR UPDATE 
AS 
BEGIN 
    IF NOT UPDATE(updatedDate) 
        UPDATE dbo.myTable SET updatedDate=GETDATE() 
        WHERE col1 IN (SELECT col1 FROM inserted) 
END 
GO
Run Code Online (Sandbox Code Playgroud)