我有一个表Contacts
那我存储为客户提供列:插入修改日期表
- Addressline1
- Addressline2
- CityID
- 的EmpID(FK)
- ModifiedDate(Computed,DateTime)
我使用ASP.NE T 4.0以及我已经使用ASP.NET向导的形式进行了3个步骤。我有几个问题。
- 如何插入
EmpID
到表dbo.Contacts
其中EmpID
是一个FK。 - 如何存储
ModifiedDate
?什么是sqlparameter添加时间值?
我有一个表Contacts
那我存储为客户提供列:插入修改日期表
我使用ASP.NE T 4.0以及我已经使用ASP.NET向导的形式进行了3个步骤。我有几个问题。
EmpID
到表dbo.Contacts
其中EmpID
是一个FK。ModifiedDate
?什么是sqlparameter添加时间值?你有两种基本的选择,以保持ModifiedDate
最新:
定义该列有DEFAULT
约束得到当前的日期/时间,当你刚插入一行,并创建一个AFTER UPDATE
触发该行
设置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语句更新的所有行的ModifiedDate
。 Inserted
是一个伪表的可用触发代码体,其中包含已被导致此触发火灾(受您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'
如何在我的应用程序中使用ModifiedDate AFTER UPDATE触发器?任何链接,告诉我如何做到这一点?谢谢, – Girish 2012-07-28 08:17:17
非常感谢..有一个疑问一个'插入'关键字在这里。我有一个叫做AddressID(PK-AutoIncrement)的PK。所以'Inserted'是我插入的表格吗? – Girish 2012-07-28 08:25:17
@Girish:'Inserted'是一个**伪表**,它只在触发器的生命周期中存在。如果你的'UPDATE'语句触及了10个地址,那么'Inserted'将包含那些已被更新的10行的新值。它将与触发器连接到的表具有相同的列,例如,在你的情况下,如果你的表有'AddressID','Inserted'中将有一列包含新插入的自动递增ID – 2012-07-28 08:27:29
您可以使用简单的UPDATE语句时,你正在修改日期 如..
update tabelname set modifieddate='@Prameterdate' where empid='01'
这些文字字符串有些可疑之处...... – 2012-07-28 08:28:14
如何是ModifiedDate“计算”? – 2012-07-28 08:04:55
数据库设计师将其分配为计算.. – Girish 2012-07-28 08:16:28
它不是从其他任何计算。只是提到它作为计算。 – Girish 2012-07-28 08:24:09