-1

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

  • 地址第一行
  • 地址线2
  • 城市编号
  • EmpID (FK)
  • 修改日期(计算,日期时间)

我使用 ASP.NET 4.0,并以 3 个步骤使用 ASP.NET 向导的形式。我的问题很少。

  1. 如何插入FK所在EmpID的表中。dbo.ContactsEmpID
  2. 如何储存ModifiedDate?添加时间值的sql参数是什么?
4

2 回答 2

2

您基本上有两种选择来保持ModifiedDate最新状态:

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

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

更新:如果要创建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,可以唯一且清楚地标识每一行。根据该行,您可以更新ModifiedDate已由给定 SQL 语句更新的所有行。Inserted是在触发器代码主体中可用的伪表,其中包含已被导致此触发器触发的操作修改的所有行(受您的UPDATE语句影响的所有行 on YourTableHere

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

更新 #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'
于 2012-07-28T08:10:07.713 回答
-1

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

 update tabelname set modifieddate='@Prameterdate' where empid='01'
于 2012-07-28T08:13:12.627 回答