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

时间:2010-03-16 16:02:44

标签: database database-design datetime sql-server-express field

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

ID = int
Name = Char
DateCreated = (dateTime, DateTime2..?)

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

虽然我们讨论的主题是:如果我想要包含另一个捕获记录最后更新日期时间的字段,我该怎么做。

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

非常感谢

麦克

3 个答案:

答案 0 :(得分:41)

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

“默认值”属性的位置取决于您运行的SQL Server Express的版本,但如果在编辑表时选择表的日期字段,则应该可以看到它。

答案 1 :(得分:31)

是的,这是一个例子:

CREATE TABLE myTable ( col1 int, createdDate datetime DEFAULT(getdate()), updatedDate datetime DEFAULT(getdate()) )

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

INSERT INTO myTable (col1) VALUES (1)

或使用关键字DEFAULT:

INSERT INTO myTable (col1, createdDate, updatedDate) VALUES (1, DEFAULT, DEFAULT)

然后创建一个更新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

答案 2 :(得分:0)

只需右键单击该列并选择属性,然后将getdate()写在Default value or binding中即可。

enter image description here

如果要在CodeFirst的{​​{1}}中执行此操作,则应在列定义之前添加以下属性:

[数据库生成的(数据库选项。已计算)]

此属性可以在EF中找到。

我认为第一个比较好:))