【问题标题】:Making a DateTime field in a database automatic?使数据库中的日期时间字段自动?
【发布时间】:2011-01-28 04:44:35
【问题描述】:

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

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

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

当我们谈到这个主题时:如果我想包含另一个字段来捕获记录上次更新时间的日期时间,我该怎么做。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我已将该字段更改为 DateTime2(7) 并将 GETDATE() 设置为默认值。但是,当查看表内容并尝试输入数据时,我在跳出 DateTime 字段时收到“不能包含空错误” - 显然我没有在其中放入任何内容,因为我期望它会自动更新.另外,我正在使用 Visual Web Developer 2008 Express Edition(我相信它使用 SQL Express 数据库包)。
    • @Mike - 使列也可以为空,然后它应该可以工作
    • 我发现了问题 - 我没有将我的 ID 列设置为 Identity,所以这条巨大的消息实际上是指向我的 ID 列不正确,而不是我的 DateTime。我已经学会了。道歉。但它有效。非常感谢。
    【解决方案2】:

    是的,这是一个例子:

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

    您可以在不指明 createdDate 和 updatedDate 列的情况下向表中插入:

    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
    

    【讨论】:

    • 谢谢,不过我的SQL体验还真的是刚开始,所以我用IDE来帮我做个表。
    【解决方案3】:

    只需右键单击该列并选择属性并写getdate()in Default value or binding.like image:

    如果您想在EF 中的CodeFirst 中执行此操作,则应在列定义之前添加此属性:

    [数据库生成(Databaseoption.computed)]

    这个属性可以在System.ComponentModel.Dataannotion.Schema找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 2019-08-23
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      相关资源
      最近更新 更多