在表格中插入修改日期

时间:2012-07-28 08:02:23

标签: c# asp.net sql-server-2008

我有一个Contacts的表格,我正在为具有列的客户存储:

  • Addressline1
  • Addressline2
  • CityID
  • EmpID(FK)
  • ModifiedDate(Computed,DateTime)

我使用ASP.NET 4.0并且在表单中我使用了ASP.NET向导,包含3个步骤。我几乎没有问题。

  1. 如何将EmpID插入到dbo.Contacts为FK的表EmpID中。
  2. 如何存储ModifiedDate?添加Time值的sql参数是什么?

2 个答案:

答案 0 :(得分:2)

基本上有两种选择可以使ModifiedDate保持最新状态:

  1. 在该列上定义DEFAULT约束以获取新添加行时的当前日期/时间,并创建AFTER UPDATE触发器以在每次更新ModifiedDate之后更新该行的操作

  2. 在对数据库进行每次保存操作之前,在客户端应用程序中设置ModifiedDate

  3. 更新:如果您想创建AFTER UPDATE触发器,请使用以下代码:

    CREATE TRIGGER trg_UpdateModifiedDate
    ON dbo.YourTableHere
    AFTER UPDATE
    AS
         UPDATE dbo.YourTableHere
         SET ModifiedDate = GETDATE()
         WHERE AddressID IN (SELECT AddressID FROM Inserted)
    

    在这里,我假设你的表YourTableHere有某种主键 - 像ID这样的列,可以唯一且清楚地标识每一行。基于该行,您可以更新已由给定SQL语句更新的所有行的ModifiedDateInserted是一个伪表,它在触发器代码体内可用,它包含导致触发器触发的操作所修改的所有行(UPDATE语句受YourTableHere语句影响的所有行1}})

    在此处阅读有关触发器的更多信息:

    更新#2:如果您的ModifiedDate列实际上是计算在SQL Server表级别上,则无法更新它直接。您需要找出它的计算结果,然后您需要修改该列(如果可以的话)。

    要了解它的计算结果,请在SQL Server数据库上运行此查询:

    SELECT 
        c.name, c.is_computed, c.definition
    FROM 
        sys.computed_columns c
    WHERE 
        object_id = OBJECT_ID('dbo.Contacts')
        AND c.Name = 'ModifiedDate'
    

答案 1 :(得分:-1)

您在修改日期时可以使用简单的UPDATE语句 像..

 update tabelname set modifieddate='@Prameterdate' where empid='01'