时间:2021-07-01 10:21:17 帮助过:2人阅读
部门表_插入:
USE [test] GO /****** Object: Trigger [dbo].[部门_Insert] Script Date: 2015/8/31 16:42:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,Ammy,Name> -- Create date: <Create Date,2015/08/19,> -- Description: <Description,部门表插入时发出提示:又添加了一种产品,并向日志表插入一条记录> -- ============================================= CREATE TRIGGER [dbo].[部门_Insert] ON [dbo].[部门表] AFTER INSERT AS BEGIN DECLARE @事件部门名称 NVARCHAR(50) SELECT @事件部门名称=部门名称 FROM inserted IF(SELECT LEN(电话号码) FROM inserted )<>11 BEGIN PRINT‘电话号码位数必须是11位‘ ROLLBACK TRANSACTION END ELSE BEGIN print ‘又添加了一个部门‘ INSERT INTO test.dbo.日志表(事件名,事件人,事件时间)VALUES(‘添加新部门:‘+@事件部门名称,‘admin‘,GETDATE()); --设置此TRIGGER的嵌套类型为true,如果在 dbo.日志表 上建立触发器,会触发激活dbo.日志表_Insert 触发器 END END GO
部门表_更新:
USE [test] GO /****** Object: Trigger [dbo].[部门表_只能修改部门编号] Script Date: 2015/8/31 16:43:17 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,Ammy,Name> -- Create date: <Create Date,2015-08-20,> -- Description: <Description,用update(字段名),完成只能修改某字段的触发器> -- ============================================= CREATE TRIGGER [dbo].[部门表_只能修改部门编号] ON [dbo].[部门表] Instead of UPDATE AS BEGIN SET NOCOUNT ON; IF UPDATE(部门编号) BEGIN DECLARE @部门编号 NVARCHAR(20), @部门名称 NVARCHAR(20), @部门职责 Nvarchar(20) SET @部门编号=(SELECT 部门编号 FROM inserted) SET @部门名称=(SELECT 部门名称 FROM inserted) SET @部门职责 =(SELECT 部门职责 FROM inserted) UPDATE 部门表 SET 部门编号=@部门编号 WHERE 部门名称=@部门名称--AND 部门编号=@部门编号 AND @部门职责=@部门职责 --这种写法很不好,因为只能操作的语句只能按这种修改才起作用 END ELSE BEGIN PRINT ‘只能修改部门编号‘ RAISERROR(‘除了部门编号之外的字段都不允许修改‘,16,5) --PRINT 输出自定义信息,但是只能在查询编辑器窗格中运行SQL语句才能看到这些自定义的信息, --而其他的前端应用程序都不会显示这些自定义的信息 END END GO
日志表触发器:
USE [test] GO /****** Object: Trigger [dbo].[日志表_Insert] Script Date: 2015/8/31 16:44:11 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE TRIGGER [dbo].[日志表_Insert] ON [test].[dbo].[日志表] AFTER INSERT AS BEGIN PRINT‘数据库又有记录变动了‘ END GO
数据库触发器_trigger
标签: