如何定义一个触发器,当删除表中数据时,先将删除的数据插入到另一个...
发布网友
发布时间:2022-04-27 04:32
我来回答
共1个回答
热心网友
时间:2022-04-11 16:35
解决办法如下:
--创建测试表
create table t_a(id int,name varchar(10));create table t_b(id int,name varchar(10));--测试数据insert into t_a(id,name) values (1,'a');--创建 for delete 触发器create trigger trg_t_a_1 on t_afor deleteasbegininsert into t_b select id,name from deleted;end--从t_a中删除一条数据delete from t_a where id=1;
--查看t_b
select * from t_b
触发器的作用:
触发器有如下作用:
可在写入数据表前,强制检验或转换数据。
触发器发生错误时,异动的结果会被撤销。
部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。
可依照特定的情况,替换异动的指令 (INSTEAD OF)。
分类
[2] SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
DML触发器
当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
DDL触发器
它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及*程序员对数据库的修改,比如不允许删除某些指定表等。
登录触发器
登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。
如何定义一个触发器,当删除表中数据时,先将删除的数据插入到另一个...
name varchar(10));--测试数据insert into t_a(id,name) values (1,'a');--创建 for delete 触发器create trigger trg_t_a_1 on t_afor deleteasbegininsert into t_b select id,name from deleted;end--从t_a中删除一条数据delete from t_a where id=1;...
...Student表中数据时,先将删除的数据插入到另一个专门存放已删除的表...
假设定义的存放已删除数据的表叫stuback. 再假设student表里有这么几列:sno,sname,sage,ssex,sdep。触发器代码:create trigger stu on student for delete as begin declare @sno char(10),@sname char(20),@sage char(2),@ssex char(20),sdep char(20)select @sno=sno,@sname=sna...
如何将数据库表中被删掉记录插入到另外一个一模一样的表(类似假...
给你一个例子:触发器代码:AFTER DELETE代表在删除操作之后,deleted表是系统临时记录删除数据的。CREATE TRIGGER mytrg ON dbo.表A AFTER DELETEAS INSERT INTO dbo.表A备份 ( xh, col1 ) SELECT xh,col1 FROM deletedGO测试:
sql中如何建立一个触发器,使出入和删除某条记录时,系统能自动进行相关...
CREATE TRIGGER [触发器名字] ON 表名 FOR INSERT(插入)|DELETE(删除)|UPDATE(更新)AS declare @username varchar(50)//自定义@母表字段 select @username=UserName from inserted insert 需要更新的表字段(类型) values( @username)就这样,不懂在问我吧 下面例子:CREATE TRIGGER [tgUser] ON dbo....
...触发器,当表一中某条数据删除时,表二中对应的数据自动删除,急!_百度...
create trigger 触发器名 on 表一 after delete as begin delete from 表二 end 分不会这么好拿吧?你是不是想要表一删除某些数据时引发表二的删除,而删除另外一些数据不会引发?试试这个:declare i int create trigger 触发器名 on 表一 before delete as select i=count(*) from 表一 where...
触发器-当一个表更新时,将数据插入另一张表中
-- 直接运行即可 -- 当商品上下架状态更新时,记录到另一个表中 DROP TRIGGER IF EXISTS updatetbl_slope;-- 删除原先的触发器 CREATE trigger updatetbl_slope AFTER update-- 表示触发器是在激活它的语句之后触发 on aa_product for each row -- mysql固定语法 BEGIN IF new.Is...
...的某一条数据删除后然后将这一条数据插入到另一个表中?
insert into jumper1c select (select min(id) from jumper1b where id<>a.id and fromnet =a.[FromNet] or fromnet=a.[ToNet] or tonet =a.[ToNet] or tonet=a.fromnet ),FromDevice,FromPin,FromNet,ToDevice,ToPin,ToNet from jumper1b as a;insert into jumper1d select ...
...超过500条时,使用触发器把表中的最久的数据删除
触发器中的 deleted表中就是保存删除的行。取出插入另一个表即可。例:CREATE TRIGGER tri_del ON 表名 FOR DELETE AS declare @id int declare @name varchar(20)select @id = id, @name = name from deleted --取删除的数据 insert into 表名2 values(@id = id,@name) --插入另一个...
用SQL创建一个触发器,当删除“成绩”表中的信息时,提醒“你删除了X行...
trigger print_alert on grade ---grade是我自己的表,换成你的表就行了 for delete as declare @rowCount int set @rowCount = @@ROWCOUNT if @rowCount <> 0 begin print '删除的行数为:' + STR(@RowCount)end你只要删除就会有输出,比如:delete from grade where id=6 or id=7 ...
...怎么用存触发器实现从一个表里查询数据,然后插入到另一个表里...
//测试数据insert MyUser values('123','123',1)insert MyUser values('admin','123456',2)insert MyUser values('1234','1234',1)insert MyUser values('administrator','123',2) 追问 假如被插入的是部分字段呢?就是就是从一个表中选一个字段插入到另一个表中,但被插入的其它字段还不能为空 本...