【发布时间】:2013-04-04 09:12:54
【问题描述】:
基本上我在同一个 SQL 数据库中有两个表。 [table_1] & [table_2]
[Label] 是两个表的主键
[table_1]的设计是
[Label] [varchar](50) NOT NULL
[Use_Date] [date] NULL
[Sent_Date] [date] NULL
[Checked_Date] [date] NULL
[table_2]的设计是
[Label] [varchar](50) NOT NULL
[DateFirstRegistered] [date] NULL
[LastUsedDate] [date] NULL
[UsageCount] [int] NULL
如果 [table_1] 中的 [use_date] 有更新,则触发器需要更新 [LastUsedDate] 和 [表 2] 中的strong>UsageCount]。 [table_1] 的其他列中的任何更改都应在不影响 [table_2] 的情况下处理。
我有一个触发器可以在 [table_1] 中的 use_date 更新时工作...但如果不是,则在更新其他列时会导致提交问题.
这里是提到的触发器
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trgOnTable1Update] ON [dbo].[Table_1]
AFTER UPDATE
AS
BEGIN
UPDATE c
SET c.LastUsedDate=a.Use_Date,
c.UsageCount=c.UsageCount+1
FROM inserted a
INNER JOIN deleted b ON a.Label=b.Label
INNER JOIN [dbo].[Table_2] c ON a.Label=c.Label
WHERE a.Use_Date<>b.Use_Date
END
我知道我在那里遗漏了一些逻辑缺陷,但我这辈子看不到它...... 任何有关如何使这项工作的帮助将不胜感激。
提前致谢。
【问题讨论】: