我有一个表格Contacts
,我正在为带有列的客户存储:
- 地址第一行
- 地址线2
- 城市编号
- EmpID (FK)
- 修改日期(计算,日期时间)
我使用 ASP.NET 4.0,并以 3 个步骤使用 ASP.NET 向导的形式。我的问题很少。
- 如何插入FK所在
EmpID
的表中。dbo.Contacts
EmpID
- 如何储存
ModifiedDate
?添加时间值的sql参数是什么?
我有一个表格Contacts
,我正在为带有列的客户存储:
我使用 ASP.NET 4.0,并以 3 个步骤使用 ASP.NET 向导的形式。我的问题很少。
EmpID
的表中。dbo.Contacts
EmpID
ModifiedDate
?添加时间值的sql参数是什么?您基本上有两种选择来保持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
,可以唯一且清楚地标识每一行。根据该行,您可以更新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'
您可以在修改日期时使用简单的 UPDATE 语句,例如..
update tabelname set modifieddate='@Prameterdate' where empid='01'