如何在存储过程中建立触发器

作者&投稿:红凭 (若有异议请与网页底部的电邮联系)
sql怎么在存储过程中创建触发器~

--一些基本语法,详细的请参考联机帮助
--创建作业
declare @dbname sysname,@jobname sysname,@date int,@time int
exec msdb..sp_add_job @job_name=@jobname,@delete_level=1
--创建作业步骤
declare @sql varchar(800)
select @sql='insert into .....' ,@dbname=db_name()
--创建调度
EXEC msdb..sp_add_jobschedule @job_name = @jobname,
@name = '时间安排',
@enabled = 1,
@freq_type = 1,
@active_start_date = @date,
@active_start_time = @time
-- 添加目标服务器
EXEC msdb.dbo.sp_add_jobserver
@job_name = @jobname ,
@server_name = N'(local)'
go
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '更新处理步骤',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔
.......

MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地

(1).存储过程:
create procedure for_select(你想用的触发器名字)
delare @name char(8) output(用于输出的),@age int output(用于输出),@phone_num char(11) (输入)
as
select @name=name(列名),@age=age(列名) from table_name(表名)
where phone_num(列名)=@phone_num

(2)触发器
create tigger for_update
on table_name
after update
as
if(update(phone_num))
update table_name2
set phone_num=i.phone_num
from deleted d,inserted i
where table_name.phone_num=d.phone_num
end
其中:deleted与inserted是sql中默认的临时表。用来储存原来的值和插入的值。本触发器的作用是 当更新table_name 中的phone_num时table_name1中的phone_num也一起更新!注意触发器只能用于update.insert.delete.select中不能用于创建表............

使用 动态 SQL, 好像是可以处理。

1> CREATE procedure fpinput_proc
2> AS
3> BEGIN
4>
5> DECLARE @sql VARCHAR(MAX);
6> SET @sql =
7> 'CREATE TRIGGER AfterDeleteVIP '
8> + ' ON VIP '
9> + ' FOR DELETE '
10> + 'AS '
11> + 'BEGIN '
12> + ' DELETE FROM VB '
13> + ' WHERE '
14> + ' V_No IN (SELECT V_NO FROM deleted); '
15> + 'END; '
16>
17> EXECUTE (@sql);
18> END;
19> go

1> begin
2> exec fpinput_proc;
3> end
4> go

1> select
2> tri.name AS TriggerName
3> from
4> sys.triggers tri
5> go
TriggerName
------------------------------------------------------
AfterDeleteVIP

也就是把那一段 创建触发器的语句, 放到一个 @Sql 的变量中。
然后 EXECUTE (@sql);

那么在存储过程执行完毕后,触发器就创建了。

你上面那个 创建 视图的例子, 也可以这么操作。

看样子你用的事MSSQL,据我所知,ORACLE在存储过程中不能 使用:create trigger/create view/create procedure/create rule /create default之类的关键词。。。也就是不能建立,所以MSSQL也可能不能建立!

为什么要在存储过程中建触发器呀


sqlserver存储过程怎么调试
如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了。于是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本。非常不方便。还好,SQLSERVER 2008中这个很重要...

存储过程的性能会比批处理的T-SQL语句差吗?
而且可读性好,所以一定能读上提高了效能。但是在大型的数据仓库中,存储过程基本上是必不可少的,它的优势和不可替代性还是很明显的,只要能避免哪些效率差的写法,存储过程还是个很好的东西的。这个也是要分情况分析,不能一概而论的,所以你的观念和你前辈的观念是从不同角度看的,都有道理。

SQL中DDL、 DML、 DCL、 TCL、 DQL有何区别
在一些公司中提交给测试团队的SQL脚本会划分为DDL、DML等,但这些概念到底是如何定义的呢?SQL(Structure Query Language)是数据库操作的的核心语言,接下来我们通过一张图来进行分析:DDL(Data Definition Languages)语句: 即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等常用的...

存储过程和函数有何区别
函数的参数列表只有输入参数,并且有return <返回值类型,无长度说明>。返回值上:存储过程的返回值,可以有多个值,函数的返回值,只有一个值。调用方式上:存储过程的调用方式有:1)、exec <过程名>;2)、execute <过程名>;3)、在PL\/SQL语句块中直接调用。函数的调用方式有:在PL\/SQL语句块中直接...

Oracle面试题(基础篇)
2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4). 在sql数据操纵语句中只能调用函数而不能调用存储过程 4. Oracle的导入导出有几种方式,有何区别? 1). 使用oracle...

请问oracle存储过程在is后面声明的变量和begin语句块里面通过declare声明...
范围上的区别,就像在方法外声明的变量可以用在多个方法内使用,而方法内声明的变量只能在该方法内使用。

如何通过存储过程计算一条SQL语句执行时间
想知道一条SQL语句的执行时间何须用到存储过程,用SET STATISTICS TIME ON 就行了。

红枣和黑枣的存储方法有何差异?
(2)防虫:红枣容易受到虫害的侵扰,可以在存储前将红枣放入冰箱冷冻一段时间,以杀死可能存在的虫卵。此外,还可以在存储容器中放入一些花椒、八角等香料,以防止虫害。(3)避光:红枣在阳光直射下容易变质,所以存储时要放在阴凉处,避免阳光直射。(4)保持通风:红枣在存储过程中要保持良好的通风条件...

SQL存储过程中提示“'+' 附近有语法错误。应为','或';'”。请问这段代...
从 E:\\Test.xls 文件中,检索 Sheet1 中的数据。SELECT FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\\Test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]如果写在一行里面, 还是抱错的话。那么建议是 定义一个变量来存储这个 参数了。然后...

VB该如何显示存储过程返回的结果集
SQL Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "商品信息", Conn, 1, 1 While (Not rs.EOF)ListView1.ListItems.Add , , rs.Fields("净成本").Value '增加到ListView中 rs.MoveNext '记录集下移一行 Wend Set rs = Nothing Set Conn = Nothing End Sub ...

连云区15067487719: 如何在存储过程中建立触发器
典急依诺: (1).存储过程: create procedure for_select(你想用的触发器名字) delare @name char(8) output(用于输出的),@age int output(用于输出),@phone_num char(11) (输入) as select @name=name(列名),@age=age(列名) from ...

连云区15067487719: 如何在存储过程中建立触发器 -
典急依诺: 使用 动态 SQL, 好像是可以处理.1> CREATE procedure fpinput_proc2> AS3> BEGIN4>5> DECLARE @sql VARCHAR(MAX);6> SET @sql =7> 'CREATE TRIGGER AfterDeleteVIP '8> + ' ON VIP '9> + ' FOR DELETE '10> + 'AS '11> + 'BEGIN...

连云区15067487719: 存储过程中创建触发器 -
典急依诺: 注意触发器只能用于update.insert.delete.select中不能用于创建表. 看样子你用的事MSSQL,据我所知,ORACLE在存储过程中不能 使用:create trigger/,

连云区15067487719: 如何创建存储过程和触发器 -
典急依诺: 创建方法如下: CREATE PROC 存储过程名 { 参数1 数据类型 参数2 数据类型 ... } AS SQL语句 这是存储过程.触发器就把PROC 改成TINNER

连云区15067487719: sql怎么在存储过程中创建触发器 -
典急依诺: --一些基本语法,详细的请参考联机帮助--创建作业 declare @dbname sysname,@jobname sysname,@date int,@time int exec msdb..sp_add_job @job_name=@jobname,@delete_level=1--创建作业步骤 declare @sql varchar(800) select @sql='...

连云区15067487719: SQl中怎么样创建触发器?
典急依诺: 触发器是一种特殊类型的存储过程.主要是通过事件触发而被执行. 创建触发器的格式举例: (删除) create trigger delete_trigger on employee for delete as delete p_order from p_order inner join deleted on p_order.雇员ID=deleted.雇员ID 可以创建 删除,更新,插入 事件的 触发器

连云区15067487719: sql的关键语法,,如创建 存储过程,触发器,等代码怎么写? -
典急依诺: 创建存储过程: CREATE OR REPLACE procedure 过程名(传递的参数) 变量声明 BEGIN 过程执行代码; end;创建触发器 CREATE OR REPLACE TRIGGER 触发器名 AFTER INSERT(触发条件,insert/update/delete) ON 表 REFERENCING NEW AS New OLD AS Old FOR EACH ROW DECLARE变量声明 BEGIN执行主体代码; END AFTER_INSERT_CID;

连云区15067487719: mssql 数据库如何创建触发器/存储过程?
典急依诺: 在SQL中,名词触发器指“在数据库中为响应一个特殊表格中的某些事件而自动执行的程序代码.”(Wikipedia)说得简单一些,它是在一个特殊的数据库事件,如INSERT或DELETE发生时,自动激活的一段代码.触发器可方便地用于日志记录、对单个表格到其他链接式表格进行自动的“层叠式”更改、或保证对表格关系进行自动更新.当一个新整数值增加到数据库域中时,自动更新运行的总数的代码段是一个触发器.自动记录对一个特殊数据库表格所作更改的SQL命令块也是一个触发器实例.

连云区15067487719: SQL 存储过程里面创建触发器 Incorrect syntax near the keyword 'trigger' -
典急依诺: 你是用的SQL Server数据库吧?SQL Server中创建触发器的参考有明确规定: creater trigger必须为批处理中的第一条语句,并且只能应用于一个表.也就是说,create trigger是不能嵌在别的SQL语句中执行的.所以, 你想在存储过程中动态创建触发器是不能实现的.

连云区15067487719: Oracle 存储过程 触发器用法 -
典急依诺: 1:什么叫存储过程?在oracle中,可以在数据库中定义子程序,这种程序块叫存储过程(procedure),它存放在数据字典中,可以在不同用户和应用程序中共享,并可以实现程序的优化和重用.2:存储过程的有点? 过程运行在服务器端,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网