当前位置:首页 » 编程语言 » sql语句如何删除触发器
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql语句如何删除触发器

发布时间: 2022-04-01 02:18:51

Ⅰ 求sql删除触发器,

不好意思刚才写错了

create TRIGGER temp1
on A for delete --删除时触发
as
DECLARE @Acode nvarchar(20)--声明变量用于记录删除的APrdCode
DECLARE @Aw numeric --声明变量用于记录删除的记录的APrdWeight
DECLARE @Bw numeric --声明变量用于B中BPrdWeight
select @Acode = APrdCode from deleted --从逻辑表deleted中读取A中删除的APrdCode
select @Aw =APrdWeight from deleted --从逻辑表deleted中读取A中删除的记录的APrdWeight
select @Bw =BPrdWeight from B where BPrdCode=@Acode --B中BPrdWeight
update B set BprdCode=@Bw - @Aw where BPrdCode=@Acode --删除后B的BprdCode

--deleted 和 inserted 是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。

Ⅱ SQL。。删除指定表的触发器求助。。

因为你的IF语句的有效范围只到raiserror('你不能删除该表',16,1)
不管IF是否成立,rollback tran都会被执行的。
我没有检查是否还有其它错误,针对不执行的问题解决方法是
create trigger safety
on database
for drop_table
as
declare @data xml
declare @schemaname nvarchar(max)
declare @tablename nvarchar(max)
set @data=eventdata()
select @schemaname=eventdata().value('(/EVENT_INSTANCE/SCHEMANAME)[1]','nvarchar(max)')
select @tablename=eventdata().value('(/EVENT_INSTANCE/OBJECTNAME)[1]','nvarchar(max)')

if @schemaname='dbo'and @tablename='a'
begin
raiserror('你不能删除该表',16,1)
rollback tran
end

Ⅲ 如何一次删除多个触发器,谢谢各位

触发器是一种特殊的存储过程,类似于其它编程语言中的事件函数,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。
本专题的目的并非是向您详尽地介绍触发器,而是系统地向您介绍触发器的常用知识与相关应用,并与您一起探讨应用经验,如果您需要了解触发器不常用的知识点,请参见 SQL Server 联机丛书(安装 SQL Server 时默认是安装的)。
a.基础-创建一个简单的触发器
触发器是一种特殊的存储过程,类似于事件函数,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列 T-SQL语句。
触发器可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建,不过都是要写 T-SQL 语句的,只是在查询分析器里要先确定当前操作的数据库
创建触发器用 CREATE TRIGGER
CREATE TRIGGER 触发器名称
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS
T-SQL 语句
注意:触发器名称是不加引号的。
如下是联机丛书上的一个示例,当在 titles 表上更改记录时,发送邮件通知 MaryM。
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE, DELETE
AS
EXEC master..xp_sendmail 'MaryM',
'Don''t forget to print a report for the distributors.'
b.基础-删除触发器
用查询分析器删除
在查询分析器中使用 drop trigger 触发器名称 来删除触发器。
也可以同时删除多个触发器:drop trigger 触发器名称,触发器名称...
注意:触发器名称是不加引号的。在删除触发器之前可以先看一下触发器是否存在:
if Exists(select name from sysobjects where name=触发器名称 and xtype='TR')
用企业管理器删除
在企业管理器中,在表上点右键->“所有任务”->“管理触发器”,选中所要删除的触发器,然后点击“删除”。
c.基础-重命名触发器 ......

Ⅳ SQL如何创建删除的触发器

CREATE TRIGGER A表_DEL
ON A表FOR DELETE
AS
--SET NOCOUNT ON
DELETE E
FROM A表 E
INNER JOIN deleted D ON E.主键ID = D.主键ID

Ⅳ sql创建一个触发器删除语句

CREATE TRIGGER [触发器名] ON [挂靠表名]
before/after --关键字 UPDATE --触发操作
AS
BEGIN
--内容SQL
END;

Ⅵ sql中 如何定义 删除 触发器

-- 查看数据库已有触发器
use yourdatabase
go
select * from sysobjects where xtype='TR'
-- 查看单个触发器
exec sp_helptext '触发器名'

--删除触发器:
基本语句如下:
drop trigger trigger_name

Ⅶ sql联动删除,删除触发器怎样来设置

关于合并,没有太明白你的具体要求。
第二个问题,两种解法,如果是innodb表可以通过建立外键约束来级联删除,语法如下:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION
第二种就是设置after delete trigger

Ⅷ oracle触发器,记录删除的sql语句

一般情况下,trigger 是不能实现记录当前的sql的,只能记录删除当前这一条数据的sql和删除掉的数据。
可以查一下事务处理试试。

Ⅸ 如何在SQL 中创建一个可以删除数据的触发器

触发器只有针对某张表被删除、插入、修改时才可以对另一张表进行删除、插入、修改数据的