2012-07-28 65 views
-1

我有一个表Contacts那我存储为客户提供列:插入修改日期表

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

我使用ASP.NE T 4.0以及我已经使用ASP.NET向导的形式进行了3个步骤。我有几个问题。

  1. 如何插入EmpID到表dbo.Contacts其中EmpID是一个FK。
  2. 如何存储ModifiedDate?什么是sqlparameter添加时间值?
+1

如何是ModifiedDate“计算”? – 2012-07-28 08:04:55

+0

数据库设计师将其分配为计算.. – Girish 2012-07-28 08:16:28

+0

它不是从其他任何计算。只是提到它作为计算。 – Girish 2012-07-28 08:24:09

回答

2

你有两种基本的选择,以保持ModifiedDate最新:

  1. 定义该列有DEFAULT约束得到当前的日期/时间,当你刚插入一行,并创建一个AFTER UPDATE触发该行

  2. 设置ModifiedDate在您的客户端应用程序每次保存操作之前到数据库的每个更新操作后更新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这样的列可以唯一清晰地标识每一行。根据该行,您可以更新由给定SQL语句更新的所有行的ModifiedDateInserted是一个伪表的可用触发代码体,其中包含已被导致此触发火灾(受您UPDATE声明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' 
+0

如何在我的应用程序中使用ModifiedDate AFTER UPDATE触发器?任何链接,告诉我如何做到这一点?谢谢, – Girish 2012-07-28 08:17:17

+0

非常感谢..有一个疑问一个'插入'关键字在这里。我有一个叫做AddressID(PK-AutoIncrement)的PK。所以'Inserted'是我插入的表格吗? – Girish 2012-07-28 08:25:17

+1

@Girish:'Inserted'是一个**伪表**,它只在触发器的生命周期中存在。如果你的'UPDATE'语句触及了10个地址,那么'Inserted'将包含那些已被更新的10行的新值。它将与触发器连接到的表具有相同的列,例如,在你的情况下,如果你的表有'AddressID','Inserted'中将有一列包含新插入的自动递增ID – 2012-07-28 08:27:29

-1

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

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

这些文字字符串有些可疑之处...... – 2012-07-28 08:28:14