【发布时间】:2018-02-13 09:44:29
【问题描述】:
我有 2 个常规表(Table1 和 Table2)和一个临时表(TempTable)。我正在从 Table2 中的行更新 Table1 中的行:
update t1
set t1.[Table1] = t2.[Price]
FROM
[Table1] t1
JOIN [Table2] t2 on t1.[KAT_ID] = t2.
[KAT_ID]
where t1.[Price] != t2.[Price]
我想在 Table1 上创建一个触发器,将所有更新的行插入到 TempTable 中。这是我目前所拥有的:
CREATE TRIGGER [dbo].[TABLE1_TRIGGER] ON [dbo].[Table1]
AFTER UPDATE
AS
IF OBJECT_ID('tempdb..##TempTable') IS NOT NULL DROP TABLE
##TempTable
CREATE TABLE ##TempTable(
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[KAT_ID] [varchar](50) NULL,
[Price] [money] NULL)
我不知道如何将更新的行插入到 TempTable 中。
【问题讨论】:
-
为什么要将这些插入到全局临时表中?老实说,这些是可怕的。您最好将其放置在某种临时表或其他东西中。您在这里的全部目标是什么?
-
看起来是 XY 问题
-
修改前(旧值)还是修改后(新值)要插入哪些记录?
-
将 Log 数据插入 Global temp Temple 的必要性是什么。临时表的范围不是永远的。你最好想想物理表。
标签: sql sql-server triggers insert sql-update