为插入/更新创建单个触发器

h

我正在使用SQL Server 2008。

假设我有一个表A,它是一个事务表。而表B是历史表。

每当在表A中插入或更新一行时,都应在表B中插入新行。

表B的“状态”列应分别更改为“插入”或“已更新”。

如何从一个触发器处理这个问题?

埃里克

您要的内容非常简单:

CREATE TRIGGER TR_TableA_IU ON dbo.TableA FOR INSERT, UPDATE
AS
SET NOCOUNT ON;
INSERT dbo.TableB (Column1, Column2, Status)
SELECT
   I.Column1,
   I.Column2,
   CASE WHEN EXISTS (SELECT * FROM Deleted) THEN 'UPDATED' ELSE 'INSERTED' END
FROM Inserted I;

如果您还想处理删除操作,也可以在单个语句中完成:

CREATE TRIGGER TR_TableA_IUD ON dbo.TableA FOR INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON;
INSERT dbo.TableB (Column1, Column2, Status)
SELECT
   I.Column1,
   I.Column2,
   CASE WHEN EXISTS (SELECT * FROM Deleted) THEN 'UPDATED' ELSE 'INSERTED' END
FROM
   Inserted I
UNION ALL
SELECT
   D.Column1,
   D.Column2,
   'DELETED'
FROM Deleted D
WHERE NOT EXISTS (
   SELECT * FROM Inserted
);

哇,到目前为止,有很多完全错误和半错误的答案(至少在过于复杂的情况下)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase云存储功能触发器-确定新创建文件的用户ID令牌

来自分类Dev

向新创建的用户授予权限的 DDL 触发器

来自分类Dev

如何在MySQL中使用更新/插入为删除之前/之后创建触发器?

来自分类Dev

SQLite-创建用于插入或更新的触发器

来自分类Dev

在插入时创建MySQL触发器

来自分类Dev

插入前创建Mysql触发器

来自分类Dev

创建“插入后”触发器

来自分类Dev

插入前创建Mysql触发器

来自分类Dev

SQL触发器-更新/插入

来自分类Dev

如何编写插入,更新触发器

来自分类Dev

多表触发器更新/删除/插入

来自分类Dev

SQL AFTER插入更新触发器

来自分类Dev

在触发器上更新插入的记录

来自分类Dev

PostgreSQL创建触发器,该触发器在表的每次插入或更新时运行一个函数

来自分类Dev

SQL Server 为插入前触发器创建自定义计数器

来自分类Dev

在MySQL中创建触发器并更新

来自分类Dev

从插入触发器进行更新时,更新触发器未触发

来自分类Dev

为子表插入创建触发器返回令人困惑的错误

来自分类Dev

为 SUM 表创建触发器并插入到另一个表中

来自分类Dev

更新触发器,为插入的数据SQL Server设置值

来自分类Dev

创建触发器,当行更新时将旧值插入其他表

来自分类Dev

插入后创建触发器,以更新另一个表

来自分类Dev

Postgresql创建触发器以插入/更新中的完整性约束

来自分类Dev

在更新时创建触发器,并将其插入定制表中

来自分类Dev

插入触发器后的SQLITE3更新将不会创建

来自分类Dev

在MySQL中插入和更新后,如何创建触发器来更改状态?

来自分类Dev

使用1种语法创建触发器插入更新删除

来自分类Dev

在新创建的表格中插入日期

来自分类Dev

将新创建的div插入DOM

Related 相关文章

热门标签

归档