在SqlServer中定义触发器
发布网友
发布时间:2022-04-27 04:32
我来回答
共2个回答
热心网友
时间:2022-05-03 19:17
最简单的办法,这两个表之间建立一个主外键关系,级联更新、删除,这样效率最高也最简单。
非要写触发器的话,如下:
CREATE TRIGGER tr_person_ud
ON person
AFTER DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
--判断是删除还是修改
DECLARE @IsDel bit
SET @IsDel = 1
IF(EXISTS(SELECT * FROM inserted)) SET @IsDel = 0
IF(@IsDel = 1)
BEGIN
DELETE FROM salary WHERE pno IN(SELECT pno FROM deleted)
END
ELSE
BEGIN
--改变后的值
DECLARE @newTable TABLE(autoId int IDENTITY(1,1),pno int NOT NULL)
INSERT INTO @newTable(pno)
SELECT pno FROM inserted
--改变前的值
DECLARE @oldTable TABLE(autoId int IDENTITY(1,1),pno int NOT NULL)
INSERT INTO @oldTable(pno)
SELECT pno FROM deleted
--循环修改
DECLARE @maxId int,@loopId int,@oldpno int,@newpno int
SELECT @maxId = max(autoId),@loopId = 1 FROM @newTable
WHILE(@loopId <= @maxId)
BEGIN
SELECT @oldpno = pno FROM @oldTable WHERE autoId = @loopId
SELECT @newpno = pno FROM @newTable WHERE autoId = @loopId
UPDATE salary SET pno = @newpno WHERE pno = @oldpno
SET @loopId = @loopId + 1
END
END
SET NOCOUNT OFF;
END
热心网友
时间:2022-05-03 20:35
CREATE TRIGGER MyTr1 ON person
FOR UPDATE
AS
IF UPDATE(pno)
BEGIN
UPDATE salary
SET pno=自己定义
FROM salary
WHERE pno=(SELECT pno FROM Inserted,Deleted WHERE Inserted.pno=Deleted.pno)
END
GO
以上是有关修改的触发器,关于删除的你可以按同样的方法写。
CREATE TRIGGER MyTr2 ON person
FOR DELETE
AS
BEGIN
DELETE
FROM salary
WHERE salary.pno=(SELECT pno FROM Deleted)
END
GO
SQL Server触发器的基本语法和使用方法
SQL Server数据库中的触发器是一种强大的工具,能在特定事件如数据插入、更新或删除时自动执行预设操作,对于数据的自动化管理和业务逻辑维护至关重要。要创建触发器,首先使用CREATE TRIGGER语句,包括触发器名称(如trigger_name)、事件类型(BEFORE或AFTER)、触发事件(INSERT、UPDATE或DELETE)、关联的表...
SQL Server触发器的基本语法和使用方法
大家好,我是晨希。SQL Server 数据库中的触发器是一种特殊的数据库对象,在特定事件发生时自动执行操作,用于数据的自动化处理和业务逻辑维护。创建触发器使用 CREATE TRIGGER 语句。基本语法包括触发器名称、事件类型(如 BEFORE 或 AFTER 插入、更新或删除操作)、触发事件(如 INSERT、UPDATE 或 DELETE...
SQL SERVER如何应用DLL触发器
1、首先打开SQL SERVER 2008数据库管理工具,然后选择服务器,选择Windows身份验证进行连接,如下图所示 2、进入管理工具以后,定位要操作的数据库,然后点击新建查询,如下图所示 3、在新建查询界面中,通过create trigger语句创建DLL触发器,当进行数据库删除和修改的时候进行触发,如下图所示 4、语句编写...
如何使用sql语句创建触发器?
它们主要在响应数据操作语言(DML)事件、数据定义语言(DDL)事件或登录事件时触发。DML触发器用于在执行INSERT、UPDATE或DELETE语句时触发,而DDL触发器响应CREATE、ALTER和DROP等DDL事件。登录触发器则在用户会话建立时触发。创建触发器需要遵循特定的SQL语法约定。参数包括架构名、触发器名、作用域(表或视...
SQL server中的触发器分为几类?
SQL SERVER中触发器的触发类型有三种。1、DML触发器,当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果对该表写了对应的DML触发器,那么该触发器自动执行。2、DDL触发器,是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改...
SQL触发器SQL触发器语法
SQL触发器是数据库中的一种机制,通过特定的SQL语句定义,用于在特定的数据修改操作(INSERT、DELETE、UPDATE)后自动执行特定的操作。触发器名称需唯一,符合标识符规则,可以使用WITH ENCRYPTION加密并设置NOT FOR REPLICATION防止复制过程中的触发。触发器通常包含Transact-SQL语句,用于检查或修改数据,但不会...
SQL中,触发器是什么?
1、触发器。 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提) 我为什么要使用触发器...
SQL Server触发器创建、删除、修改、查看
一:触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录_更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。二:SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中而不是在数据库中。
SQL中的“触发器”是什么?
例如在执行update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。\x0d\x0a\x0d\x0aSQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。 \x0d\x0a\x0d\x0a D...
请问在sqlserver中什么是前触发型触发器,什么是后触发型触发器,怎么...
前触发器:指在执行INSERT,UPDATE,DELETE之前去触发【触发器】要执行的语句 后触发器:指在执行INSERT,UPDATE,DELETE之后再去触发【触发器】要执行的语句。比如一个update触发器,要执行删除操作。那么有两种情况,第一先update在delete(后触发器)第二先delete在update(前触发器)...