【发布时间】:2014-07-18 23:41:15
【问题描述】:
我需要一些帮助来创建存储过程/查询(只要它有效就没有关系),当我插入新行时会发生以下情况。这是一个非常简单的表,有 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] [datetime] NULL)
- 当我插入一个新行时:查询检查是否有该 ID 具有更高 begin_date 的其他记录(如果有多个具有更高 begin_date 的行无关紧要,我只需要更接近插入的那一个)
- 如果有,则将新行的 date_finish 设置为现有行的 date_begin
- 如果没有,将新插入的date_finish设置为NULL
- 检查是否存在该 ID 的其他记录,其 date_begin 较低,但 date_finish 较高(或 NULL)
- 如果有,将该记录的 date_finish 更新为新插入的 date_begin 值。
这有意义吗?
我可以在脑海中将这些部分组合在一起,但似乎无法将其编码为 SQL 中的单个查询/存储过程。我将使用 VBA 从 Excel 中插入这些行,以便将其硬编码到 VBA 上的插入查询中。
顺便说一句我想避免触发,因为我过去曾尝试过它们,但它们给我带来了很多麻烦。我对这个 SQL 很陌生。
你能帮帮我吗?
谢谢!
【问题讨论】:
-
@ckuhn203 - 感谢您的意见。尽管您的问题似乎比我的要复杂得多,但它肯定会带来一些启示,我将彻底阅读以继续了解有关 SQL 的更多信息。
标签: sql excel vba sql-server-2005 insert