SQL 2005在插入时更新列
我需要一些帮助来创建一个存储过程/查询(只要它能正常工作就无关紧要),在这里插入新行时会发生以下情况。这是一个非常简单的表,有4列,与其他表相关SQL 2005在插入时更新列,sql,excel,vba,sql-server-2005,insert,Sql,Excel,Vba,Sql Server 2005,Insert,我需要一些帮助来创建一个存储过程/查询(只要它能正常工作就无关紧要),在这里插入新行时会发生以下情况。这是一个非常简单的表,有4列,与其他表相关 CREATE TABLE [#loginid_name]( [Login_ID] [int] NOT NULL, [Login_ID_Name] [varchar](30) COLLATE Latin1_General_CI_AI NOT NULL, [Date_Begin] [datetime] NOT NULL, [Date_Finish] [da
CREATE TABLE [#loginid_name](
[Login_ID] [int] NOT NULL,
[Login_ID_Name] [varchar](30) COLLATE Latin1_General_CI_AI NOT NULL,
[Date_Begin] [datetime] NOT NULL,
[Date_Finish] [datetime] NULL)
谢谢 我会采用不同的方法,因为完成日期本质上是一个基于同一表中其他记录的计算字段,所以我会将其保留为计算字段,而不是存储字段。因此,您可以设置如下视图:
SELECT Login_ID,
Login_ID_Name,
Date_Begin,
( SELECT MIN(Date_Begin)
FROM [#loginid_name] AS l2
WHERE l2.Login_ID = l.Login_ID
AND l2.Date_Begin > l.Date_Begin
) AS Date_Finish
FROM [#loginid_name] AS l;
这样,您就不需要通过VBA或触发器来管理Date_Finish列,只需引用此视图而不是基表并获取结束日期。因此,如果插入后出于任何原因更新了开始日期,则上一条记录的结束日期保持同步。这要简单得多,因为当进行这样的更新时,可能会导致多个记录的完成日期发生更改。先生,您是一位很好的绅士。非常感谢你。你的解决方案正好满足了我的需要。我将继续按照你的建议修改我的数据库。我有一个@ckuhn203-谢谢你的输入。虽然您的问题似乎比我的问题复杂得多,但它确实揭示了一些问题,我将深入阅读,以继续学习更多有关SQL的知识。