sql 触发器使用例子

网络编程 2025-03-13 03:14www.168986.cn编程入门

在数据库触发器世界中,存在两个特别的临时表:inserted 和 deleted。它们扮演着重要的角色,在数据变动时,存储着关键信息。

相反,当执行删除(delete)操作时,deleted表开始发挥作用。它就像记录着逝去生命的殓房,存储着被删除的记录的“遗骸”。你可以想象它为数据库中的“删除历史”区域,存放着那些被标记为删除的数据。

但当我们谈论更新(update)操作时,情况变得更为复杂。虽然触发器中没有专门的updated表,但我们可以通过inserted和deleted表捕捉到更新的信息。想象一下,你正在修改一个已经存在的记录。修改前的信息会“遗留”在deleted表中,而修改后的新信息则在inserted表中“崭露头角”。这是一种奇妙的方式来捕捉数据变动的瞬间。

```sql

SET ANSI_NULLS ON;

SET QUOTED_IDENTIFIER ON;

GO

ALTER TRIGGER [dnt_user_add] ON [dbo].[dnt_users]

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

INSERT INTO [dnt_userfields](uid)

SELECT uid FROM inserted;

END

```

接下来是删除操作的触发器:

```sql

SET ANSI_NULLS ON;

GO

SET QUOTED_IDENTIFIER ON;

GO

CREATE TRIGGER [dnt_users_del] ON [dnt_users]

AFTER DELETE

AS

BEGIN

SET NOCOUNT ON;

DELETE FROM [dnt_userfields] WHERE [dnt_userfields].uid=deleted.uid;

END

GO

```

最后是更新操作的触发器示例:

```sql

SET ANSI_NULLS ON;

GO

SET QUOTED_IDENTIFIER ON;

GO

ALTER TRIGGER [dnt_users_up] ON [dnt_users]

AFTER UPDATE

AS

BEGIN

SET NOCOUNT ON;

UPDATE [dnt_userfields] SET icq = inserted.uid FROM inserted WHERE [dnt_userfields].uid = inserted.uid;

END

GO

```c Cambrian的body渲染完成。

上一篇:MySQL插入时间差八小时问题的解决方法 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by